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
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,...