int a 1,b 2,c 3,d 0 if a 1 b2 if bc3 printfd d結果為什麼不是1,

2021-04-28 17:36:20 字數 2953 閱讀 5168

1樓:匿名使用者

第一句if。a==1和b++都為真du。。所以執行zhiif(b!=0||c--!=3),dao但是b++==2先判斷b是否為2,後b自加1,所以內b=3,答案1,3,3

c不減1是因為if(b!=0||c--!=3)這個容if是或運算,在c語言中或運算只有在||之前的表示式不為真的時候在進行||後面的表示式計算,而上面是||之前的表示式為真(b!

=0),故||後面的表示式(c--!=3)不計算

2樓:英俊的骨頭

因為b!=0這個是對的,而且又是或操作,所以編譯器就直接忽略後面的c--!=3了

3樓:愛吃烤腸

第二個if語句中有||,它在判斷第一個條件 b!=0 正確後就不會進行第二個條件的判斷,所以 c--!=3 並未執行,所以輸出是 1 3 3

4樓:玥殤

第一句if。a==1和b++都為真。。所以執行if(b!=0||c--!=3),但是b++==2先判斷b是否為2,後b自加1,所以b=3,答案1,3,3

5樓:匿名使用者

b!=0 滿足後 就直接下一句了

6樓:匿名使用者

int a=1,b=2,c=3,d=0;

if(a==1&&b++==2)//2,這裡是先判a==1,關鍵是判斷b++=2這裡是先取b和2比較然後再b自加的,那麼是真的,然後執版

行下面的if

if(b!權=0||c--!=3)//1,b!=0是真的c--是一樣的道理,先取c,再自減,這裡是假,執行下面那個else

printf("%d %d %d",a,b,c);

else printf("%d %d %d",a,b,c);//這個 else是和1 那個if是一對的

else printf("%d %d %d",a,b,c);//這個是和2是一對的

最後羅出的是1 3 2

有以下程式#include

7樓:艾絲凡怠速放緩

|源程式:

#include

main()

輸出: 1,3,3

【分析】

if(a==1&&b++==2) */ a==1 正確,b++==2,自增運算級在判斷符前,又因為是b++而不是++b,所以判斷時b為2,判斷結果為正確,判斷結束,b自增為3。進入下一個if /*

if(b!=2 || c--!=3) */ 此時b已經是3,所以b!

=2,正確,由於是 ||(或),前面正確,就不用判斷後面,所以進入 printf("%d,%d,%d\n",a,b,c);時,c依舊是3 /*

所以輸出:1,3,3

8樓:匿名使用者

你這個問題主要是短路求值的問題,打眼一看,所有的分支都是執行相同 的語句,貌似是 1 3 2才是正確答案。其實不然。

1、首先,第一個if 是真的的,而且執行完後 b=3,所以它要執行第二個if語句。

注意第二個if的條件 是 b!=2 因為是||運算,因為b=3,所以b!=2 是真,所以後面的 c--!

=2 這個表示式是不執行的。 這就是所謂的短路求值。 因此,直接執行下面的語句,此時,c的值還是3

所以答案是 1 、3、3

你可以參考 c++ primer中的 關係 運算子的短路求值部分的內容,也可以參考 c++程式設計 中的短路求值內容。。

c語言, int a=1,b=2,c=3,d=4; if((a=2)&&(b=1)) c=2;

9樓:匿名使用者

int a=1,b=2,c=3,d=4;

if((a=2)&&(b=1)) c=2;

a=2表示賦值2給a,同時檢查結果2是不是真, 當然是,所以又檢查b=1,

b=1 同上,結果也是真,所以執行c=2;

if((c==3)||(d==-1)) a=5;

c=2!=3 ,d=4!=-1,所以不執行a=5;

printf("%d,%d,%d,%d\n",a,b,c,d);

正確結果為:2 1 2 4

如果你的答案是5 1 2 -1,則說明你if((c==3)||(d==-1)) a=5;這句寫錯了,

應該是if((c==3)||(d=-1)) a=5; 是d=-1不是d==-1

c=2!=3為假,因為是||或關係,所以會再判斷d=-1,-1非0為真,會執行a=5

這樣結果為

a=5 b=1 c=2 d=-1

10樓:匿名使用者

我執行的結果是2,1,2,4

第一個if中a=2(b=1)是賦值,和a==2(b==1)是不一樣的

11樓:匿名使用者

if((a=2)&&(b=1)) 相當於if(2&&1) ,結果很明顯

12樓:雪月靈妖

1.結果是: 2,1,2,4

不知道你為什麼是5,1,2,-1

2.if((a=2)&&(b=1))

a=2 => 2 真

b=1 => 1 真

#include main() { int a=1,b=2,c=3,d=0; if (a==1 && b++==2) if (b!=2||c--!=3)

13樓:權升易

程式不完整,第二個if應該為else if還缺少printf

14樓:匿名使用者

題目不全。。。。。。。。。。。。。。。。。。。

c語言判斷a0b0,c語言中,a1,b1ifa0!b

不知道你要問什麼,但是我仍然可以告訴你這句話的意思!1,a,b肯定是在程式的某個地方定義的整形變數,他們代表的是任何整數,具體是多少,要看程式怎麼賦值了2,符號就是 等於的意思,注意c語言中只有一個等號的情況下,不是等於的意思,而是賦值3,是並且的意思 也就是說要這個符號前後的表示式全都是真的情況下...

C語言int a 3,b 4,c 5,t 99 if a0 t b b c a t printfd ,c 為什麼不能編譯呀

語句沒錯!printf語句後沒分號 main函式沒返回值的話定義為void型,預設是整型。編譯器中輸入要注意中英文輸入方式!程式沒問題 一定是你編譯的軟體在格式上有什麼要求才導致不能編譯 提示說的很明白,檢查你的include路徑設定是否有問題 printf d c 語句後似乎少了分號。int a ...

int a 1,b 2,c 2,t while abct a a b b t cprintfd,d,d n ,a,b,c 為什麼輸出的是1,

首先看a再把a!第一次迴圈a版為1,然後1環的條件權成立 那麼執行迴圈體後a 2,b 1,c 1 第二次迴圈a 第三次迴圈a abai是1,1也為 true c 2 du所以第一次 zhiwhile的值為dao1,執行 之後內,a 2,b 1,c 1,繼續進行while判斷a容while的值也為1,...