C語言中for表示式1表示式3可理解為

2021-05-14 02:56:27 字數 6171 閱讀 6642

1樓:烏金生宣碧

for(表示式1;表示式2;表示式3)

程式執行時,先執行表示式1.

若表示式2為真,則執行for迴圈體中的語句一次,再執行表示式3。接著再繼續回去執行表示式2。再執行for迴圈體中的語句一次,再執行表示式3。。。

如此迴圈下去,直到表示式2為假時,結束迴圈,執行for語句下面的語句。

上面是一種情況。

另一種情況

程式執行時,先執行表示式1

若表示式2為假時,迴圈直接結束。執行for迴圈下面的語句。

當省略表示式2時。可能造成無限迴圈,也就是死迴圈。

舉個例子:

for(i=0;;i++)

除錯執行之後,它會無限次執行for語句。

也就是說,執行i=0,然後沒有表示式2,編譯器預設為真,就執行for語句的printf(),然後再執行i遞增一次。

本來接下去要執行表示式2,現在省略了,編譯器預設為真,直接執行for語句printf(),再執行i遞增一次。。如此迴圈下去。。

這樣就變成了死迴圈。。永不退出。。

接下來,不省略表示式2的時候。

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

除錯執行之後,可以看見,只列印出了5次「這是一個不省略表示式2的迴圈!」

因為表示式2控制了列印次的次數。所以,一般表示式2是用來設定控制迴圈的條件。

要明白,通常

表示式1是用來為變數賦初值,表示式2設定控制迴圈的條件,表示式3改變迴圈變數的值。

多動手操作就會明白了。。。

2樓:李蕊智雲

for(表達

式1;表示式2

;表示式3)

表示式1表示執行一次表示式1,

表示式2(就是表示式1後面的)為控制表示式,表示式2為空表示這個式子恆為真,既然是真,那如果迴圈體裡沒有退出的判斷條件的話這個迴圈將會永遠執行!!

然後執行迴圈體(這裡你沒寫,就是在for迴圈下面的語句或者複合語句),然後執行表示式3(一般是更新部分),

然後繼續執行迴圈體,,表示式3...

迴圈體,表示式3...

c語言中for(表示式1; ;表示式3)可理解為?

3樓:太叔哲美竇濯

for(表達

式1;表示式2

;表示式3)

表示式1表示執行一次表示式1,

表示式2(就是表示式1後面的)為控制表示式,表示式2為空表示這個式子恆為真,既然是真,那如果迴圈體裡沒有退出的判斷條件的話這個迴圈將會永遠執行!!

然後執行迴圈體(這裡你沒寫,就是在for迴圈下面的語句或者複合語句),然後執行表示式3(一般是更新部分),

然後繼續執行迴圈體,,表示式3...

迴圈體,表示式3...

4樓:席恨寒茹剛

for(表示式1;表達

式2;表示式3)

程式執行時,先執行表示式1.

若表示式2為真,則執行for迴圈體中的語句一次,再執行表示式3。接著再繼續回去執行表示式2。再執行for迴圈體中的語句一次,再執行表示式3。。。

如此迴圈下去,直到表示式2為假時,結束迴圈,執行for語句下面的語句。

上面是一種情況。

另一種情況

程式執行時,先執行表示式1

若表示式2為假時,迴圈直接結束。執行for迴圈下面的語句。

當省略表示式2時。可能造成無限迴圈,也就是死迴圈。

舉個例子:

for(i=0;;i++)

除錯執行之後,它會無限次執行for語句。

也就是說,執行i=0,然後沒有表示式2,編譯器預設為真,就執行for語句的printf(),然後再執行i遞增一次。

本來接下去要執行表示式2,現在省略了,編譯器預設為真,直接執行for語句printf(),再執行i遞增一次。。如此迴圈下去。。

這樣就變成了死迴圈。。永不退出。。

接下來,不省略表示式2的時候。

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

除錯執行之後,可以看見,只列印出了5次「這是一個不省略表示式2的迴圈!」

因為表示式2控制了列印次的次數。所以,一般表示式2是用來設定控制迴圈的條件。

要明白,通常

表示式1是用來為變數賦初值,表示式2設定控制迴圈的條件,表示式3改變迴圈變數的值。

多動手操作就會明白了。。。

5樓:厲暄妍委櫻

無退出迴圈的條件,如果迴圈體中沒有break就會一直迴圈下去

急急急!c++。對for(表示式1;表示式3)可理解為for(表示式1;1;表示式3)。為什麼?

6樓:匿名使用者

可以,for表示式(1,2,3)1是在x執行前執行,2是限制條件,空則表示無限制條件,和數字1的意思一樣,數字1表示條件為真,即通過。3是在執行後執行。 但樓主表示有誤應該為:

for(1;;3)即使為空也不能省略分號

7樓:匿名使用者

1代表真,

第二個表示式的意思,表示式一必須滿足表示式才能進入迴圈體

c語言for(表示式1,表示式2,表示式3)語句 中表示式2為空語句則變成死迴圈,那麼這裡的空語句為真還是假

8樓:倒黴熊

這裡「表示式2為空語句則變成死迴圈」這樣說不完整正確。

例如下面這個迴圈:

int i=0;

for(i=0;;i++)

這就不是死迴圈,這裡將for的第二個表示式的判斷移至迴圈體內,藉助break來結束迴圈。

這裡的空語句可以理解為永真,因為沒有進行任何的判斷,所以可以這樣理解。

9樓:匿名使用者

你都說了變成死迴圈了。那你告訴我是真還是假呢。。

肯定只有是真,for迴圈裡面的內容才會執行啊。

10樓:匿名使用者

首先for語句中各表達

式是通過分號隔開的,通過表示式1確定迴圈初值,表示式2確定判斷迴圈條件,表示式3可用於設定增值;現表示式2為空語句,表示不做迴圈判斷直接執行迴圈體內語句,也可以認為是表示式2預設為真。

11樓:匿名使用者

糾正一個錯語: for(表示式1; 表示式2; 表示式3),裡面是分號,不是逗號。

12樓:瑞峰

給的表示式太原始,最好拿出幾個不同的例子出來

13樓:

你就好像問,這裡沒有數,那麼這個沒有的數是大於零,還是不大於零。

14樓:匿名使用者

for(;;)則變成死迴圈,空語句還有真和假?

c語言中的 (表示式1)?(表示式2):(表示式3) 什麼意思?

15樓:李好

表示式1一般是判斷語句的,如果是true,則返回表示式2,否則返回表示式3。

舉個列 :(1>2)?1:2 ,因為1<2的,結果是false,所以返回表示式3, (1>0)?2:2, 因為1>0的,結果是true,所以返回表示式2。

如果表示式1 的值為真,那麼以表示式2 的值作為整個條件表示式的值,否則以表示式3 的值作為整個條件表示式的值。

c語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。

它的應用範圍廣泛,具備很強的資料處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到c語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如微控制器以及嵌入式系統開發。

c語言是一個有結構化程式設計、具有變數作用域(variable scope)以及遞迴功能的過程式語言。

c語言傳遞引數均是以值傳遞(pass by value),另外也可以傳遞指標(a pointer passed by value)。

c語言的優點是簡潔緊湊、靈活方便;運算子豐富;資料型別豐富;表達方式靈活實用;允許直接訪問實體地址,對硬體進行操作;生成目標**質量高,程式執行效率高;可移植性好和表達力強等。

c語言的缺點主要表現在資料的封裝性上,這一點使得c在資料的安全性上有很大缺陷,這也是c和c++的一大區別。

且c語言的語法限制不太嚴格,對變數的型別約束不嚴格,影響程式的安全性,對陣列下標越界不作檢查等。從應用的角度,c語言比其他高階語言較難掌握。

c語言中的 (表示式1)?(表示式2):(表示式3) 什麼意思?我給忘了~~拜託各位大神

16樓:夢

表示式1一般是判斷語句的,如果是true,則返回表示式2,否則返回表示式3 舉個列 (1>2)?1:2 因為1<2的,結果是false,所以返回表示式3, (1>0)?

2:2 因為1>0的,結果是true,所以返回表示式2

17樓:江公主殖矢

給你舉個例子 int x=3,y=4,max; max=x>y?x:y; 意思就是 如果x>y滿足 執行?後面的語句 也就是將x的值賦給max 否則 執行將:的值y賦給max

c語言中 for語句的格式為 for(表示式一;表示式2;表示式3) 表示式二能否是兩個以上?? 5

18樓:匿名使用者

不可以,表達

式二實際上是一個邏輯表示式,供for迴圈使用,可以沒有,對於表示式來說沒有連寫的情況,也即不存在你所說的「兩個連寫」。而1和3實際上不能稱為表示式,他們實際上是可執行的標準語句,供for迴圈呼叫,語句是可以連寫的,也可以沒有。

注意表示式和語句的區別。

不過這還要拒絕於編譯器,不同的編譯器可能會提供不同的特性,理論上是這樣的。

我好奇多問一句:你有什麼樣的需求需要在表示式二中寫多條語句呢?

19樓:匿名使用者

不行的,for語句的執行順序,是先執行表示式一,再看表示式二是否成立,所以表示式二只能有一個,但是可以用&&、||、!把兩個連在一起,但實際還是一個。

20樓:魂鬥羅第一代

可以 只要中間有2個分號就行。

for只關注分號的個數

21樓:匿名使用者

如果有多個表示式,則可以寫一個自定義函式,返回一個值,將對這個函式的呼叫放在表示式2的位置。

22樓:匿名使用者

可以,但是語句間要用邏輯運算子,即&& ||等連線起來,不能用「;」號。

c語言中for(;;)是什麼意思?

23樓:a羅網天下

在c語言中,for語句使用最為靈活,它的一般形式為:

for(表示式1; 表示式2; 表示式3)  語句它的執行過程如下:

先求解表示式1。

求解表示式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然後執行下面第3)步;若其值為假(0),則結束迴圈,轉到第5)步。

求解表示式3。

轉回上面第2)步繼續執行。

迴圈結束,執行for語句下面的一個語句。

程式執行過程如下圖所示:

24樓:

當然會死迴圈了。

for後的圓括號中,第一個分號前的內容是執行第一次迴圈前執行的,第二個分號前的內容是每次執行前都要判斷的(如果該處表示式的值為真,那麼執行迴圈體,如果為假,那麼就跳出迴圈體),第二個分號後的內容是每執行完一次迴圈體後執行的

你這裡中間沒有限制條件(第2個分號前)(有限制條件也要該條件必然會變成真,迴圈才會停止),所以不會停。另一種停止的方法在迴圈體中使用break跳出迴圈體。

25樓:匿名使用者

for(;;)

相當於while(1)

即不設初值,不判斷條件,迴圈變數不增值,無終止的迴圈。

那個程式會死迴圈

26樓:匿名使用者

for(;;)語句相當於

while(1)語句

即不設初值,不判斷條件,迴圈變數不增值。無終止地執行迴圈體。

也就是一直輸出a.

27樓:安徽新華電腦專修學院

for 是迴圈的一種 ...

用來執行限制次數的迴圈 ...

28樓:季茉お豳煜

分號前後可以沒有引數,但是必須要定義並且有條件控制它不然就是死迴圈

29樓:識得秋風面

死迴圈,不過在一些競賽的程式中經常出現

c語言中表示式的值怎麼算,C語言中表示式的值怎麼算

此式即等同於 4!3 2 4 1 5 1代表真,0代表非,則原式即 1 1 0 所以值為0。例如 12 5 2 只為這個是整數運算,結果只取整數部分。62 1 6 7 7 6 1 13 49 623.2 6 7 1 44.8 可以。逗號運算子,從左至右計算,取最後一個表示式的值作為整個語句的值。先算...

表示式43750的值為,在C語言中,表示式532840的值為。

步驟 1 1 7 4 2 1 0 3 0 所以最後結果是 0 在c語言中,表示式5 3 2 8 4 0的值為 1 正常思路 由於邏輯運算子優先順序別低於比較運算子同時這兩種都低於算術運算子,因此先考慮後半部分,4 0 真值為1,而8 1的真值為0.再考慮或左邊的表示式,5 3 2顯然真值為1最終結果...

c語言的表示式

優先順序問題。首先明確。高到低優先順序依次是 這樣,語句可以解釋為 leap year 4 0 year 100 0 year 400 0 就是判斷year是否能整除4並且整除100或者year是否能整除400.如果可以,leap 1 否則leap 0 實際就是判斷year是不是閏年。這是個關於閏年...