亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? c.txt

?? 自已編的PSO(粒子群優(yōu)化算法)的程序 MyPSO
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
以文本方式查看主題

-  大學(xué)生科技協(xié)會  (http://glietkx.home2.cernet.cn/index.asp)
--  C/C++  (http://glietkx.home2.cernet.cn/list.asp?boardid=2)
----  C語言編程常見問題解答  (http://glietkx.home2.cernet.cn/dispbbs.asp?boardid=2&id=167)

--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 22:59:22

--  C語言編程常見問題解答

這個(gè)帖子將不斷擴(kuò)充、更新 羅列大部分C語言編程的常見問題



希望各位觀眾支持幫助 畢竟一人之力太有限



小弟在此先謝過!

--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:01:44

--  
1.  tch語句必須包含default分支嗎?
    不,但是為了進(jìn)行錯誤檢查或邏輯檢查,還是應(yīng)該tch語句中加入default分支。例如,下tch語句完全合法:
{
      case tyt:
      case \'y\': printf ( " You answered YES ! \\n" )
           break
      case \'N\':
      case \'n\': printf ("You answered NO!\\n");
           break
}

但是,如果一個(gè)未知字符被傳遞給這tch語句,會出現(xiàn)什么情況呢?這時(shí),程序?qū)]有任何輸出。因此,最好還是加入一個(gè)default分支,以處理這種情況:

......
default: printf ("Unknown response : %d\\n", char_code);
          break
......

  此外,default分支能給邏輯檢查帶來很多方便。例如,如果tch語句來處理數(shù)目固定的條件,而且認(rèn)為這些條件之外的值都屬于邏輯錯誤,那么可以加入一個(gè)default分支來辨識邏輯錯誤。請看下列:

void move_cursor (int direction)
{
    tch (direction)
     {
           case UP:     cursor_up()
                            break
           case DOWN:   cursor_down()
                            break
           case LEFT:   cursor_left ()
                            break
           case RIGHT:  cursor_ right ( )
                             break
           default:     printf ("Logic error on line number %ld!!! \\n",
                                     __ LINE__ )
                             break
     }
} 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:02:27

--  
2. switch語句的最后一個(gè)分支可以不要break語句嗎?
    盡管switch語句的最后一個(gè)分支不一定需要break語句,但最好還是在switch語句的每個(gè)分支后面加上break語句,包括最后一個(gè)分支。這樣做的主要原因是:你的程序很可能要讓另一個(gè)人來維護(hù),他可能要增加一些新的分支,但沒有注意到最后一個(gè)分支沒有break語句,結(jié)果使原來的最后一個(gè)分支受到其后新增分支的干擾而失效。在每個(gè)分支后面加上break語句將防止發(fā)生這種錯誤并增強(qiáng)程序的安全性。此外,目前大多數(shù)優(yōu)化編譯程序都會忽略最后一條break語句,所以加入這條語句不會影響程序的性能。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:02:59

--  
3.除了在for語句中之外,在哪些情況下還要使用逗號運(yùn)算符?
    逗號運(yùn)算符通常用來分隔變量說明、函數(shù)參數(shù)、表達(dá)式以及for語句中的元素。下例給出了使用逗號的多種方式:
#include <stdio.h>
#include <stdlib.h>
void main(void);

void main ()
{
     / * Here, the comma operator is used to separate
          three variable declarations.  * /
     int i, j, k;
     / * Notice how you can use the comma operator to perform
          multiple initializations on the same line.  * /
     i=0, j=1, k=2;
printf("i= %d, j=%d, k= %d\\n", i, j, k);
     / * Here, the comma operator is used to execute three expressions
          in one line: assign k to i, increment j, and increment k.
          The value that i receives is always the rigbtmost expression.  * /
     i= ( j++, k++ );
     printf("i=%d, j=%d, k=%d\\n", i, j, k);
     / * Here, the while statement uses the comma operator to
          assign the value of i as well as test it.  * /
     while (i=(rand() % 100), i !=50)
        printf("i is %d, trying again... \\n", i)
     printf ("\\nGuess what? i is 50!\\n" )
}

請注意下述語句:
     i:(j++,k++)
    這條語句一次完成了三個(gè)動作,依次為:
    (1)把k值賦給i。這是因?yàn)樽笾?lvaule)總是等于最右邊的參數(shù),本例的左值等于k。注意,本例的左值不等于k++,因?yàn)閗++是一個(gè)后綴自增表達(dá)式,在把k值賦給j之后k才會自增。如果所用的表達(dá)式是++k,則++k的值會被賦給i,因?yàn)?+k是一個(gè)前綴自增表達(dá)式,k的自增發(fā)生在賦值操作之前。
    (2)j自增。
    (3)k自增。
    此外,還要注意看上去有點(diǎn)奇怪的while語句:
while (i=(rand() % 100), i !=50)
  printf("i is %d, trying again... \\n");

  這里,逗號運(yùn)算符將兩個(gè)表達(dá)式隔開,while語句的每次循環(huán)都將計(jì)算這兩個(gè)表達(dá)式的值。逗號左邊是第一個(gè)表達(dá)式,它把0至99之間的一個(gè)隨機(jī)數(shù)賦給i;第二個(gè)表達(dá)式在while語句中更常見,它是一個(gè)條件表達(dá)式,用來判斷i是否不等于50。while語句每一次循環(huán)都要賦予i一個(gè)新的隨機(jī)數(shù),并且檢查其值是否不等于50。最后,i將被隨機(jī)地賦值為50,而while語句也將結(jié)束循環(huán)。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:03:30

--  
4.怎樣才能知道循環(huán)是否提前結(jié)束了?
    循環(huán)通常依賴于一個(gè)或多個(gè)變量,你可以在循環(huán)外檢查這些變量,以確保循環(huán)被正確執(zhí)行。請看下例:

int x
char * cp[REQUESTED_BLOCKS]
/ * Attempt (in vain, I must add... )to
     allocate 512 10KB blocks in memory.  * /
for (x = 0;  x<REQUESTED_ BLOCKS ; x++ )
{
     cpi[x]= (char * ) malloc (10000,1)
     if (cp[x]= = (char * ) NULL)
           break
}
/ * If x is less than REQUESTED-BLOCKS,
     the loop has ended prematurely.  * /
if (x<REQUESTED_BLOCKS)
  printf ("Bummer ! My loop ended prematurely ! \\n" );

注意,如果上述循環(huán)執(zhí)行成功,它一定會循環(huán)512次。緊接著循環(huán)的if語句用來測試循環(huán)次數(shù),從而判斷循環(huán)是否提前結(jié)束。如果變量x的值小于512,就說明循環(huán)出錯了。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:04:36

--  
5.運(yùn)算符的優(yōu)先級總能保證是“自左至右”或“自右至左”的順序嗎?
    對這個(gè)問題的簡單回答是:這兩種順序都無法保證。C語言并不總是自左至右或自右至左求值,一般說來,它首先求函數(shù)值,其次求復(fù)雜表達(dá)式的值,最后求簡單表達(dá)式的值。此外,為了進(jìn)一步優(yōu)化代碼,目前流行的大多數(shù)C編譯程序常常會改變表達(dá)式的求值順序。因此,你應(yīng)該用括號明確地指定運(yùn)算符的優(yōu)先級。例如,請看下述表達(dá)式:
    a=b+c/d/function—call() * 5
    上述表達(dá)式的求值順序非常模糊,你很可能得不到所要的結(jié)果,因此,你最好明確地指定運(yùn)算符的優(yōu)先級:
    a=b+(((c/d)/function—call())* 5)
    這樣,就能確保表達(dá)式被正確求值,而且編譯程序不會為了優(yōu)化代碼而重新安排運(yùn)算符的優(yōu)先級了。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:08:11

--  
6.變量存儲在內(nèi)存(memory)中的什么地方?
    變量可以存儲在內(nèi)存中的不同地方,這依賴于它們的生存期。在函數(shù)外部定義的變量(全局變量或靜態(tài)外部變量)和在函數(shù)內(nèi)部定義的static變量,其生存期就是程序運(yùn)行的全過程,這些變量被存儲在數(shù)據(jù)段(datasegment)中。數(shù)據(jù)段是在內(nèi)存中為這些變量留出的一段大小固定的空間,它分為兩部分,一部分用來存放初始化變量,另一部分用來存放未初始化變量。
    在函數(shù)內(nèi)部定義的auto變量(沒有用關(guān)鍵字static定義的變量)的生存期從程序開始執(zhí)行其所在的程序塊代碼時(shí)開始,到程序離開該程序塊時(shí)為止。作為函數(shù)參數(shù)的變量只在調(diào)用該函數(shù)期間存在。這些變量被存儲在棧(stack)中。棧是內(nèi)存中的一段空間,開始很小,以后逐漸自動增大,直到達(dá)到某個(gè)預(yù)定義的界限。在象DOS這樣的沒有虛擬內(nèi)存(virtual memory)的系統(tǒng)中,這個(gè)界限由系統(tǒng)決定,并且通常非常大,因此程序員不必?fù)?dān)心用盡??臻g。關(guān)于虛擬內(nèi)存 的討論,請參見2.3。    
    第三種(也是最后一種)內(nèi)存空間實(shí)際上并不存儲變量,但是可以用來存儲變量所指向的數(shù)據(jù)。如果把調(diào)用malloc()函數(shù)的結(jié)果賦給一個(gè)指針變量,那么這個(gè)指針變量將包含一塊動態(tài)分配的內(nèi)存的地址,這塊內(nèi)存位于一段名為“堆(heap)”的內(nèi)存空間中。堆開始時(shí)也很小,但當(dāng)程序員調(diào)用malloc()或calloc()等內(nèi)存分配函數(shù)時(shí)它就會增大。堆可以和數(shù)據(jù)段或棧共用一個(gè)內(nèi)存段(memorysegment),也可以有它自己的內(nèi)存段,這完全取決于編譯選項(xiàng)和操作系統(tǒng)。
  與棧相似,堆也有一個(gè)增長界限,并且決定這個(gè)界限的規(guī)則與棧相同。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:08:40

--  
7.變量必須初始化嗎?
    不。使用變量之前應(yīng)該給變量一個(gè)值,一個(gè)好的編譯程序?qū)椭惆l(fā)現(xiàn)那些還沒有被給定一個(gè)值就被使用的變量。不過,變量不一定需要初始化。在函數(shù)外部定義的變量或者在函數(shù)內(nèi)部用static關(guān)鍵字定義的變量(被定義在數(shù)據(jù)段中的那些變量,見2.1)在沒有明確地被程序初始化之前都已被系統(tǒng)初始化為0了。在函數(shù)內(nèi)部或程序塊內(nèi)部定義的不帶static關(guān)鍵字的變量都是自動變量,如果你沒有明確地初始化這些變量,它們就會具有未定義值。如果你沒有初始化一個(gè)自動變量,在使用它之前你就必須保證先給它賦值。
    調(diào)用malloc()函數(shù)從堆中分配到的空間也包含未定義的數(shù)據(jù),因此在使用它之前必須先進(jìn)行初始化,但調(diào)用calloc()函數(shù)分配到的空間在分配時(shí)就已經(jīng)被初始化為0了。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:09:28

--  
8.什么時(shí)候應(yīng)該使用register修飾符?它真的有用嗎?    
    register修飾符暗示編譯程序相應(yīng)的變量將被頻繁使用,如果可能的話,應(yīng)將其保存在CPU的寄存器中,以加快其存取速度。但是,使用register修飾符有幾點(diǎn)限制。
    首先,register變量必須是能被CPU寄存器所接受的類型。這通常意味著register變量必須是一個(gè)單個(gè)的值,并且其長度應(yīng)小于或等于整型的長度。但是,有些機(jī)器的寄存器也能存放浮點(diǎn)數(shù)。
    其次,因?yàn)閞egister變量可能不存放在內(nèi)存中,所以不能用取址運(yùn)算符“&”來獲取register變量的地址。如果你試圖這樣做,編譯程序就會報(bào)告這是一個(gè)錯誤。
    register修飾符的用處有多大還受其它一些規(guī)則的影響。因?yàn)榧拇嫫鞯臄?shù)量是有限的,而且某些寄存器只能接受特定類型的數(shù)據(jù)(如指針和浮點(diǎn)數(shù)),因此,真正能起作用的register修飾符的數(shù)目和類型都依賴于運(yùn)行程序的機(jī)器,而任何多余的register修飾符都將被編譯程序所忽略。
    在某些情況下,把變量保存在寄存器中反而會降低運(yùn)行速度,因?yàn)楸徽加玫募拇嫫鞑荒茉儆糜谄渌康模颉咦兞勘皇褂玫拇螖?shù)不夠多,不足以抵消裝入和存儲變量所帶來的額外開銷。
    那么,什么時(shí)候應(yīng)該使用register修飾符呢?回答是,對現(xiàn)有的大多數(shù)編譯程序來說,永遠(yuǎn)不要使用register修飾符。早期的C編譯程序不會把變量保存在寄存器中,除非你命令它這樣做,這時(shí)register修飾符是C語言的一種很有價(jià)值的補(bǔ)充。然而,隨著編譯程序設(shè)計(jì)技術(shù)的進(jìn)步,在決定哪些變量應(yīng)該被存到寄存器中時(shí),現(xiàn)在的C編譯程序能比程序員作出更好的決定。
  實(shí)際上,許多C編譯程序會忽略register修飾符,因?yàn)楸M管它完全合法,但它僅僅是暗示而不是命令。
    在極罕見的情況下,程序運(yùn)行速度很慢,而你也知道這是因?yàn)橛幸粋€(gè)變量被存儲在內(nèi)存中,也許你最后會試圖在該變量前面加上register修飾符,但是,如果這并沒有加快程序的運(yùn)行速度,你也不要感到奇怪。 
--------------------------------------------------------------------------------
 
--  作者:PrOve
--  發(fā)布時(shí)間:2005-4-5 23:10:05

--  
9.什么時(shí)候應(yīng)該使用const修飾符?
    使用const修飾符有幾個(gè)原因,第一個(gè)原因是這樣能使編譯程序找出程序中不小心改變變量值的錯誤。請看下例:

while ( * str=0) / * programmer meant to write * str! =0 * /
{ 
     / * some code here * /
      strq++;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米四色…亚洲| 亚洲欧美综合网| 欧美a级一区二区| 91精品久久久久久蜜臀| 人禽交欧美网站| 精品国产91亚洲一区二区三区婷婷| 麻豆精品在线播放| 国产日韩欧美a| 色综合中文字幕国产 | 欧美日韩高清不卡| 日韩电影一区二区三区四区| 91精品国产综合久久精品麻豆| 久久精品国产久精国产| 久久欧美中文字幕| 99久久精品国产一区| 一区二区不卡在线播放| 日韩免费看网站| 国产999精品久久久久久| 日韩伦理电影网| 欧美肥胖老妇做爰| 懂色av中文一区二区三区| 亚洲美女视频一区| 欧美一卡在线观看| 成人久久18免费网站麻豆| 亚洲精品免费在线观看| 欧美一区在线视频| 成人国产免费视频| 日韩高清国产一区在线| 久久久噜噜噜久久人人看| 色狠狠综合天天综合综合| 免费成人av在线播放| 成人免费一区二区三区在线观看| 欧美日韩亚洲综合一区二区三区| 国产一区二区久久| 亚洲综合免费观看高清在线观看| 国产精品免费视频观看| 欧美三级中文字幕在线观看| 国产在线精品免费| 亚洲一区二区三区视频在线| 久久精品欧美一区二区三区麻豆| 欧美日韩一区二区三区在线看| 国产精品主播直播| 天天综合天天综合色| 国产精品久久久久久久久晋中| 欧美一级日韩不卡播放免费| 99精品欧美一区二区三区小说| 蜜臀av一区二区在线免费观看 | 美洲天堂一区二卡三卡四卡视频 | 国产精品久久看| 欧美一区二区播放| 欧美亚洲愉拍一区二区| 不卡一区在线观看| 美女国产一区二区三区| 亚洲福利一二三区| 亚洲人成网站在线| 国产精品美女久久久久av爽李琼| 日韩一区二区三区电影 | 91精品在线一区二区| 97久久超碰精品国产| 粉嫩av一区二区三区粉嫩| 免费看日韩精品| 午夜精品久久一牛影视| 亚洲综合一区二区三区| 国产精品麻豆网站| 亚洲精品一线二线三线无人区| 欧美日韩国产在线观看| 日本精品视频一区二区| av一区二区三区| 成人午夜电影小说| 国产一区二区三区视频在线播放| 日韩—二三区免费观看av| 亚洲成人av中文| **性色生活片久久毛片| 国产精品久久一卡二卡| 国产精品久久久久三级| 国产精品美女久久久久久久网站| 国产欧美一区二区精品性色超碰| 2023国产精华国产精品| 精品av久久707| 久久久久久久久久电影| 久久婷婷国产综合精品青草| 久久久精品tv| 国产欧美精品国产国产专区 | 久久机这里只有精品| 久久精品国产一区二区三| 天天综合色天天综合色h| 免费一级欧美片在线观看| 日韩成人一级片| 黄色成人免费在线| 高清不卡一区二区| 91女厕偷拍女厕偷拍高清| 在线免费观看视频一区| 欧美日本韩国一区| 日韩精品一区二区三区蜜臀| www激情久久| 国产精品久久久久婷婷| 亚洲一区二区黄色| 美女脱光内衣内裤视频久久网站 | 日韩精品亚洲专区| 蜜桃传媒麻豆第一区在线观看| 狠狠色伊人亚洲综合成人| 国产成人免费高清| 色综合视频一区二区三区高清| 欧美日韩免费观看一区二区三区| 777奇米四色成人影色区| 欧美精品一区二区久久婷婷 | 亚洲人成网站色在线观看| 亚洲国产美国国产综合一区二区 | 久久99国产精品久久| 国产91精品一区二区麻豆网站| 91丝袜美女网| 91精品久久久久久久91蜜桃| 日韩一区二区免费高清| 亚洲国产电影在线观看| 亚洲国产中文字幕| 国产最新精品精品你懂的| 成人av网址在线| 日韩亚洲国产中文字幕欧美| 国产欧美一区二区精品婷婷| 亚洲一区在线视频| 国产精品一线二线三线精华| 色嗨嗨av一区二区三区| 欧美大白屁股肥臀xxxxxx| 亚洲天堂免费看| 蜜桃视频一区二区三区| 色综合天天综合网天天狠天天 | 国产欧美日韩另类视频免费观看| 亚洲综合久久久| 国产精品一区二区三区99 | 51精品国自产在线| 国产拍揄自揄精品视频麻豆| 香蕉成人伊视频在线观看| 福利电影一区二区| 欧美一区二区三区免费在线看| 国产精品国产三级国产专播品爱网| 视频一区在线视频| 色综合久久久久网| 久久精品一二三| 美日韩黄色大片| 欧美色倩网站大全免费| 亚洲少妇30p| 国产高清精品久久久久| 欧美一区二区免费观在线| 亚洲精品美腿丝袜| 成人av免费网站| 国产欧美日韩精品在线| 激情综合网av| 欧美疯狂做受xxxx富婆| 一区二区三区四区在线| 99综合影院在线| 国产欧美一区二区三区网站 | av在线综合网| 午夜日韩在线观看| 99久久精品久久久久久清纯| 国产欧美日韩综合| 国产一区福利在线| 精品欧美一区二区三区精品久久| 无码av免费一区二区三区试看 | 欧美伦理影视网| 亚洲一区在线视频| 在线影视一区二区三区| 亚洲精品少妇30p| 91免费版在线看| 亚洲四区在线观看| 成人sese在线| 自拍偷拍国产亚洲| 色综合久久天天综合网| 亚洲精品国产品国语在线app| 不卡欧美aaaaa| 亚洲欧美在线视频观看| 99精品久久99久久久久| 亚洲视频电影在线| 欧洲另类一二三四区| 亚洲自拍都市欧美小说| 精品视频一区二区不卡| 日韩精品久久理论片| 欧美性感一区二区三区| 天天综合色天天| 欧美xxxxxxxxx| 国产成人av网站| 国产精品久久久久久户外露出| 91色九色蝌蚪| 午夜激情综合网| 日韩美女视频在线| 国产a精品视频| 综合中文字幕亚洲| 欧洲精品中文字幕| 日本一道高清亚洲日美韩| 精品国产麻豆免费人成网站| 国产91富婆露脸刺激对白| 国产精品灌醉下药二区| 欧美性大战久久久| 久久er99精品| 一区在线播放视频| 欧美二区在线观看| 国产美女精品在线| 亚洲精品视频免费看| 日韩网站在线看片你懂的| 国产精品88av| 亚洲一区二区欧美日韩|