加不加分號有什麼區別

2023-01-01 17:35:54 字數 5500 閱讀 3759

1樓:匿名使用者

1全部int max(int x, int y)是函式頭,之後緊接{}是函式體({}之間可以有語句),組成完整的函式定義。其中max是函式名,()之間的是形式引數列表,編譯器會在編譯期檢查對此函式的呼叫的引數型別(形式引數名稱被忽略,不過編譯到函式定義時,用到了形參名稱的話就需要在這裡定義名稱),剩餘部分是函式返回值型別(複雜函式返回值型別不一定只在函式名左側,例如函式頭int(*foo(void))(float)表示函式foo返回一個int(*)(float)型別的函式指標)。程式在執行期呼叫函式時按函式引數列表中的引數型別把呼叫表示式的實際引數複製形式引數,然後執行函式定義中函式體的**。

宣告是編譯器檢查物件和函式存在性的重要手段。c/c++中識別符號必需先宣告後引用,否則會引起未定義的識別符號的編譯錯誤。函式定義包含了對函式的宣告,因此在函式定義之後可以呼叫(是對函式名這一識別符號的引用)一個函式。

函式頭緊接加上分號的形式稱為函式原型,可以用於宣告一個函式(引數列表中可以完全不寫形式引數的名稱,也可以和定義中的不同,編譯器會直接忽略),因此也可以稱為函式宣告。函式宣告的作用是通知編譯器在某處存在這樣的函式定義,但不立刻編譯這個函式的定義(可以在另外的原始檔中實現這個函式的定義),而不至於在之後的函式呼叫中產生未定義識別符號的編譯錯誤(如果沒有宣告這一語言特性,c/c++無法實現互遞迴函式,使用庫也很不方便,必需在使用函式前包含函式的定義——而不是在標頭檔案只包含宣告)。如果宣告後在**都沒有定義,連結器會給出連結錯誤。

====

[原創回答團]

2樓:匿名使用者

對,定義函式前必須先宣告函式才可以使用!

3樓:

其實函式要不要宣告 就看你把函式寫在哪

如果把函式寫在main的後面 你需要在main前面加上max這個函式的宣告 如果不加 在main中呼叫這個max時 編譯器就不知道max是否存在

如果把max寫在main前面 就不需要宣告瞭如果理解了 程式在記憶體中的儲存方法 你就明白加不加宣告瞭

在c語言中,for語句的後面加分號和不加分號有何不同,該分號有什麼作用?

4樓:大野瘦子

加分號,表示這個迴圈是空語句,除了執行for()括號裡的,什麼都不幹,然後就執行下一行。

不加分號,那for迴圈後面的printf語句就是for迴圈的一部分,跟著for一起執行,但前提是for迴圈裡的條件要滿足。

分號代表語句結束。

例如:for(i=0;i<100;i++);

就等於:

for(i=0;i<100;i++)

5樓:菩提樹下發巨集願

c語言中分號作為語句結束的標誌是比不可少的,for語句後面的**從整體上分析,此時每一條語句必定帶分號,缺乏分號將導致語法錯誤。而如果for語句後面的**構成**體,則不需要再**體結束時加上分號。

for語句有兩種用法,一種是跟單語句,一種是跟**體。

1、單語句迴圈

以上5個for迴圈均實現了5條語句的5次迴圈。由於for迴圈均使用單語句迴圈,迴圈直接相互獨立,沒有巢狀結構。

但對於後3個迴圈,使用了逗號表示式作為一條語句,c語言的語句是必須以分號結束的且此處僅使用逗號表示式構成語句,並沒有構成**體,故此處仍需要使用分號。

2、**體迴圈

**體迴圈實現了多條語句迴圈,**體可以是單語句、多語句和迴圈結構等。**體迴圈結構將多條語句看成一個整體進行迴圈,每一條語句均需要分號進行結尾。

而**體以花括號作為邊界,並不是語句,故此處不需要再使用分號。

綜上for語句後根據迴圈結構內容選擇是否新增分號。如果為語句,必須以分號結尾;如果是由完整語句構成的**體,則必須使用花括號,此時可以不新增分號結尾。

擴充套件資料

需要注意的是,由於c語言的語句均以分號結尾且c語言存在空語句,故使用for語句時需要避免再完成for(;;)的結構後直接使用分號再編寫迴圈**的情況(如下圖所示)——此時的迴圈結構為空語句。

因此使用c語言需要養成良好的程式設計習慣,合理使用**體並規劃程式結構以提高開發效率。

6樓:翲燚

for語句有兩種用法,一種是跟單個語句,一種是跟**體

在跟單個語句時,由於在c語言語句預設是以分號結尾的,程式會將for (;;)之後直到第一個分號的**視為迴圈體來執行,例如下面三種情況:

for (int i=0; i<10; i++) foo1();

for (int i=0; i<10; i++)

foo1();

for (int i=0; i<10; i++)

foo1();

上面三種寫法,都是呼叫foo1()函式10次。在下面一種情況裡,程式只會將foo1()函式迴圈呼叫10次,而不會將foo2()列入迴圈中,因為分號for語句在foo2()之前就已經結束了:

for (int i=0; i<10; i++) foo1(); foo2();

特別要提的是下面的兩種寫法,這兩種寫法的for語句的迴圈體都為空,程式都不會將foo2()列入迴圈,因此foo2()只會執行一次。這也是初學者常見的書寫錯誤。

for (int i=0; i<10; i++) ; foo2();

for (int i=0; i<10; i++) ;

foo2();

除了跟單個語句外,for語句還可以跟 圈起來的**體,如下面的例子:

for (int i=0; i<10; i++)

在這種情況下,for語句可以不以分號結尾,程式會將**體內的所有語句迴圈10次。

7樓:匿名使用者

for後面是個迴圈體 你可以理解為一個語句塊for{}

平時是由一些語句組成的 如果直接加分號的話 說明不執行操作(空操作) 只做單純迴圈 沒有什麼意義 一般用在延遲函式裡

但這樣的寫法是不推薦的 因為很佔cpu 你可以試一下用三重迴圈 然後迴圈體只寫一個分號 執行你會發現電腦記憶體一下子飆很高 最簡單的電腦病毒就是這樣做的 用很高次的迴圈 做無意義的操作 讓你的電腦執行很慢

8樓:逍遙的夢

for(i = 0;i<5;你所說的是for()後面那個分號嗎?如果是的話,他後面的分號是一定要的,但是如果分號直接寫在括號後面卻沒有其他語句的話,證明這個迴圈是沒有可執行語句的,如上面1.

第二個例子分號前面有個語句,就是每當括號裡的條件成立時,他就會執行一次。

9樓:匿名使用者

分號代表語句結束假設你有一個陣列int a[5];那麼你可以這樣給陣列賦值for(int i = 0;i<5;i++) a[i]=i;這個是沒加分號的,那麼a[0]=0,a[1]=1....a[4]=4;for(int i = 0;i<5;i++);這樣加了分號,就代表結束了,相當於迴圈只執行了i,然後就退出迴圈了 a[i]=i;//這樣相當於只有a[4]=4; c語言中,分號代表語句結束

10樓:匿名使用者

c語言中";"表示一句的結束,長的句子可以分成多行寫,到最後才寫一個";"

for語句中後面的分號也是如此,根據迴圈結構和你的需求不同,有時會寫分號,有時候換到下一行寫,還是有分號的。

11樓:匿名使用者

這個 其實每一項**後面必須要加「;」,但是如果for後沒有語句 就多加一個「;」,代表那項**是空值 for ( i = 0; a[ i ] <= m; i++ ) ;;;;;;; 也沒人說你錯的

12樓:戀雲歌晨

剛試驗了一下,一個是加分號一個是不加分號的

13樓:想做一隻喵喵喵

推薦回答中最後那個迴圈出來是i=5,而不是4

在matlab中在一句程式之後加不加分號有什麼區別

14樓:匿名使用者

執行matlab程式的時候,程式中變數的值會自動儲存在 workspace中。程式命令後面輸入與不輸入「;」的區別是,當輸入半形的分號時,命令中的變數會自動列表儲存在 workspace中,變數的值不會在window command中顯示出來;當不輸入半形的分號時,變數不僅也會自動儲存在workspace中,還會在window command視窗中顯示出變數的值。至於你說的,有的時候不輸入不行,估計是你的程式的問題了,多檢查下。。

15樓:匿名使用者

加分號即執行語句,不顯示結果;不加分號,執行語句,並在命令列輸出結果。

16樓:匿名使用者

不加分號,顯示結果。加分號,不顯示結果。

在c語言中,for語句的後面加分號和不加分號有何不同?

17樓:種完太陽吃牛大

for迴圈後面加分號,表示這個迴圈是空語句,除了執行for()括號裡的,什麼都不幹。然後就執行下一行,也就是你的prinf,printf和for迴圈沒關係。

如果不加分號,那for迴圈後面的printf語句就是for迴圈的一部分,跟著for一起執行,但前提是for迴圈裡的條件要滿足。執行到第二個for時a已經等於3了,你要b=a,那b怎麼可能小於3 。所以後面的for迴圈不滿足條件,不執行,同時for裡面的**也不執行。

使用for語句應該注意:

1) for迴圈中的「表示式1(迴圈變數賦初值)」、「表示式2(迴圈條件)」和「表示式3(迴圈變數增量)」都是選擇項,即可以預設,但分號(;)不能預設。

2) 省略了「表示式1(迴圈變數賦初值)」,表示不對迴圈控制變數賦初值。

3) 省略了「表示式2(迴圈條件)」,則不做其它處理時便成為死迴圈。

例如:for( i=1; ; i++ )  sum=sum+i;

在matlab中在一句程式之後加不加分號有什麼區別

18樓:帥誠詩念

執行matlab程式的時候,程式中變數的值會自動儲存在workspace中。程式命令後面輸入與不輸入「;」的區別是,當輸入半形的分號時,命令中的變數會自動列表儲存在

workspace中,變數的值不會在windowcommand中顯示出來;當不輸入半形的分號時,變數不僅也會自動儲存在workspace中,還會在window

command視窗中顯示出變數的值。至於你說的,有的時候不輸入不行,估計是你的程式的問題了,多檢查下。。

在matlab的.m檔案中,輸不輸入分號有什麼區別?

19樓:紅盔騎士

執行matlab程式的時候,程式中變數的值會自動儲存在 workspace中。程式命

令後面輸回入答與不輸入「;」的區別是,當輸入半形的分號時,命令中的變數會自動列表儲存在 workspace中,變數的值不會在window command中顯示出來;當不輸入半形的分號時,變數不僅也會自動儲存在workspace中,還會在window command視窗中顯示出變數的值。至於你說的,有的時候不輸入不行,估計是你的程式的問題了,多檢查下。。

return加括號和不加括號有什麼區別

return 是關鍵字,不是函式,因此,其後面的括號不是必須的,加括號易於閱讀程式 有誤括號不影響執行結果。完全沒有區別。編譯器認為是一個表示式。直接計算出來,只要表示式沒有錯誤。直接就return了。js中return後面加和不加括號的區別是什麼 return 是一個返回語句 加括號情況可能他是一...

and前加逗號和不加逗號有什麼區別

and 和 and 的區別為 意思不同 用法不同 側重點不同。一 意思不同 1 and 和,與。2 and 連線句子用。二 用法不同 1 and and用作連詞,主要用來連線兩個或兩個以上的詞 短語。and連線兩個相同的詞語可用以加強語氣或表示動作的反覆或一再發生。2 and and連線兩個並列句時...

粉底液分號有什麼區別

同型別的就是顏色的不同,基本會有2 4個色號,分別適合白肌膚的人,肌膚顏色深想要遮瑕的,黯淡無光想要提亮的等等 型號一般代表防晒指數。粉底液一般都標有spf。所謂spf是指防晒產品的防晒係數,表明防晒產品所能發揮的防晒效能的高低。spf值越大,其通透性越差,會妨礙 的正常分泌和呼吸,阻斷維生素d合成...