有以下程式int a 0,b 0,c 0,d 0 if a 1 b 1 c

2021-04-12 07:22:03 字數 4321 閱讀 5128

1樓:匿名使用者

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

這一行有bai問題

if和else之間永遠du只能有一

條語句zhi,而daob=1;c=2;是兩條語句!

c語言一條語句可以寫在版多行,權多條語句也可以寫在一行,關鍵是就分號,一個分號到上一個分號(或者是,使多條語句組成一條複合語句。

如果把b=1;c=2;改為b=1,c=2;就可以編譯通過了,它的結果是1,1,2,0

原因是if(a=1)是先給a賦值,然後判斷a的值,非0則執行if後緊跟的語句,若為0則執行else後跟的語句,這裡給a賦值為1,非0,因此執行給b,c賦值的語句,所以結果是1,1,2,0

進一步,如果把if(a=1)改為if(a=0),程式執行流程跟剛才說的一樣,但是由於a值為0,因此執行else後的語句,所以最後結果會是0,0,0,3

再進一步,如果把if(a=1)改為if(a==1),那麼程式執行的時候,判斷a是否等於1,若等於則給bc賦值,否則給d賦值,這裡a==0,因此執行else後的語句,結果跟前一種情況一樣,會是0,0,0,3

2樓:計運旺湛雀

||int

a=0,b=1,c=2;

//不需要bai解釋吧

++a>0

//a成了1,然後做了次du1>0的比較,zhi結果為真

++a>0||++b>0

//由於|dao|之前已經為真,||之後內的表示式容就不執行了,b的值不變

++c;

//if成功,執行下面的語句

你應該是沒理解||和&&的估值規則吧。他們的左邊是必然會被執行的,但左邊執行完之後,右邊就不一定了。上面是||,如果&&的話,左邊為假則&&右邊不執行。

3樓:房子a房子

d,if(a=1),裡面的賦值語句是會返回值的。所以,後面對b和c的賦值操作會被執行。

4樓:匿名使用者

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

else d=3;

if 後面有兩句,而沒有用{}組織成語句塊,導致else找不到if

5樓:匿名使用者

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

else d=3;

改為if(a==1)

else

d=3;

編譯錯是因為花括號問題

6樓:匿名使用者

錯誤出現在else,因為if段已結束,編譯器找不到與else對應的if,可以將b=1後分號改為豆號。

7樓:管六

main()

8樓:匿名使用者

if(a=1) b=1;c=2; -------------printf(「%d,%d,%d,%d\n」,a,b,c,d);------""不是「」

如何像上述改完,選c

if(a=1) b=1;c=2;--------if(a==1)printf(「%d,%d,%d,%d\n」,a,b,c,d); -------- ""不是「」

如何像上述改完,選b

9樓:匿名使用者

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

這一行有錯

10樓:c姽嫿

將「 if(a=1) b=1;c=2; 」改為下面的:

if(a=1)

有以下程式: main() {int a=0,b=0,c=0,d=0; if (a=1) {b=1;c=2;} else d=3; printf (%d,%d,%d,%d\n,a,b, 5

11樓:飛奔的我的錢

答案是編譯有誤,樓上已經說得比較對了,此時的if判斷肯定是成立的,因為是a=1,而不是a==1.

12樓:儒雅隨和一丶

編譯有誤這個下面的else和上面的if根本就配不上隊啊,else就報錯了

13樓:

1120,if括號中已經將1賦值給a並且括號整體也為1,執行if語句,所以bc值改變而d不變依然是0

14樓:amanda追風

答案應該是編譯有誤,因為if只能管到第一個分號的句子,而else出現在第三個分號的句子中,也就意味著這個else沒有與之搭配的if,所以會出現編譯有誤的現象。樓主可以自行執行之。

15樓:匿名使用者

輸出 0,0,0,3

15 以下程式執行後的輸出結果是___。 main() { int a=0,b=0,c=0,d=

16樓:匿名使用者

應該是 d 編譯有錯

if ... else ... 中 if 和 else 後面只能跟一條語句,如果需要執行多條的話需要用 括一下,上面的 if 後面跟著兩條語句所以有錯

123.有以下程式 #include main() { int a=0,b=0,c=0,d=0; (a++ && b++) ? c++ : d++; printf(

17樓:匿名使用者

首先,判斷(copya++&&b++)這個條

bai件,這個條件中又首du先判斷a++,得到結果為假zhi(由於是後置自增運算子dao,所以a在判斷的時候為0,判斷之後為1)。&&運算中,只要有一個條件為假,則整個條件為假,所以程式不再判斷b++這個條件,並且將(a++&&b++)這個條件判定為假。所以程式執行冒號後面的d++。

所以a=1,b=0,c=0,d=1。所以答案選d

下述程式的輸出結果是main(){int a=0,b=0,c=0;if(++a>0||++b>0) ++c; printf("%d,%d,%d",a,b,c);}

18樓:匿名使用者

c++a=1>0,成立,所以||的結果必為真,因此後面的++b就沒有執行了

因為if成立,所以++c肯定執行了。

所以a,c變成了1,b還是0

19樓:匿名使用者

是c,因為哈,這道題用的是短路法,或的左邊為真,++a是1右邊無論是真是假都是真,所以b原樣0輸出,++c是1,所以101

20樓:匿名使用者

咋出現這麼多結果、、、、

21樓:開蕊柯昭

1,0,1

注意||左邊的結果如果為真,右邊的就不執行。所以++b不會執行。

有以下程式 #include main() int a=1,b=2,c=0,d=4; if{(a=2)||(b=1)}c=2;

22樓:匿名使用者

#include

main()

if((c==3)||(d==-1))如果c==3或者d==-1有一個成立,則執行if語句;如果兩個都不成立,則不執行

}你覺得你程式抄寫對了嗎?我覺得程式你抄寫漏了喲。a=2是賦值,而不是比較,我估計應該是a==2.如果是由兩個等號,請看我的註釋。輸出為 1,2,0,4.

23樓:我是羊指甲

這程式能執行嗎。。。。。

執行以下程式後,其輸出結果是( )。 int a=0,b=0,c=0; c=(a-=a-5)

24樓:天才與麻煩

(a-=a-5)即a=a-(a-5)=5

所以c=5

a=b=0;

所以選b

希望對你有幫助,有問題歡迎追問~

25樓:楊苓門慧心

大哥題都不對。du

inta=0,b=0,c=0;zhi

c=(a-=a-5),(a=b,b+3);

printf(「

dao%d,%d,%d\n」,a,b,c);

按程式執行來講吧。回

第一句不說了

答...

第二句為逗號表示式。

c=(a-=a-5)

給c賦值,把a-=a-5的結果賦給c;

(a-=a-5)=(a=a-(a-5));

把a=0;代入得a=5;

進而(a-=a-5)的值為5;

c=5;

接下來執行(a=b,b+3);

這裡面又有逗號表示式。

a=b;因b=0;故a=0;

b+3;不對任何變數賦值,相當於空語句;

綜上所述:a=0;b=0;c=5.

論述完畢.....................

ifa0b0c0和ifa0ifb0ifc0的區別

if a 0 b 0 c 0 表示一個判斷3個條件 同時成立,也就是內a,b,c都要同時等於0if a 0 if b 0 if c 0 是3個判斷,每個判斷1個條件,也就是a 0的時候容,做什麼,b 0的時候。c 0的時候朋友,請 採納答案 您的採納是我答題的動力,如果沒有明白,請追問。謝謝。c語言...

已知a0,b0,c0,abc1,試證明

令x ab,y ac,z bc,則xyz 1不妨設x y z,則x y x z y z 1 y z 1 x z 1 x y 由順序和 亂序和,得 x y z y x z z x y y y z z x z x x y x y z y x z z x y z y z x x z y x y 上面兩式相...

inta0和inta區別,c語言程式設計inta和inta有區別嗎?

c 全域性變數中沒有任何區別,函式中第一個輸出時會輸出0,而第二個不定。前者是抄在記憶體中開闢了一塊襲叫做a的內bai存空間,裡面存放 du0 後者表示zhi將要開闢記憶體空間了,dao但是還沒有開闢簡單的說,int a 0相當於建了一座倉庫,然後再裡面裝了貨物而 int a相當於拿到了一塊地契,留...