在C語言中mainint a 1,b 2,c 3 printfd,d,d,d n ,a b c,a b c,ab c ,ab c執行結

2021-03-27 22:06:16 字數 4095 閱讀 8130

1樓:匿名使用者

a=b=c //將c的值3賦給b,再將b=c的值3賦給a,整個表示式的值是3

a=b==c //vc2005測試結果是3,我自己算應該是1,這個我不是很清楚。

a==(b==c) //先判斷b==c,結果是1,再判斷a==1,結果是0

a==(b==c) //先判斷b==c,結果是1,再判斷a==1,結果是0

2樓:

!a=b=c,a=b==c,a==(b==c),a==(b==c)第一個 a=b=c 是一個賦值語句 使得 a=b=c=3 所以輸出 3

第二個 a=b==c 先對 b==c判斷 即 3==3 是正確的 所以 a=1

第三個 a==(b==c) 由之前的賦值可以知道 b=c=3 所以 b==c 判斷為 1

再對a==1 進行判斷 ,結果為真 所以是1第四個 和第三個一樣 也是一樣的

後來我在cfree5.0測試了一下

發現用這樣

#include

main()

你會發現輸出的值是1

而如果是用

#include

main()

發現是 3,0,0,0

第二個是0

我懷疑是printf函式的處理表示式的問題每一個編譯器的處理 應該是不一樣的

我在第二個加了括號,也沒用。結果還是0

我們現在還在學逗號運算子,這些,都是我自己推的。。

僅是愚見

3樓:

因為後面三個是「==」(等於號),顯然c是不等於b的,按邏輯值處理成0.

程式如下:

#include

main()

結果為3,0,0,0

4樓:笑引幽

因為先a==(b==c);運算返回0,==是關係運算子,b==c返回0 ,a==(b==c)返回0

然後 a==(b==c), 同樣得到0,

a=b==c, a的值就變成0了

a=b=c a,b,c都值為3,整個表示式返回3所以輸出 3,0,0,0

5樓:張效群

第一個a=b=c 是賦值語句,最終結果是a=3傳給前面;第二個a=b==c,是先作比較運算==,結果為真,即非0,一般為1,所以此時a=1,並把結果賦予前面;第三個是判斷語句,b==c為真,結果為1,a==1,結果為真,即1,並賦予前面;第四個同樣為1;

所以最終結果是3,1,1,1的哦

設有: int a=1,b=2,c=3,d=4,m=2,n=2; 執行(m=a>b)&&(n=c>

6樓:不不見不念

這是邏輯運算,n的值為2

(m=a>b) 是賦值表示式,若a大於b則m得真,否則m得假回。答 a=1,b=2, a>b 為假,故 m=假。賦值表示式(m=a>b)為假。m=0。

在邏輯與&&運算中,如果第一個運算元為假,則結果是假,後面的運算元不參與運算,本題中因為第一個運算元(m=a>b)為假,所以第二個運算元(n=c>d)不參加運算,因此n的值不變。

7樓:匿名使用者

選a!首先要了解一下抄

運算子的運算先bai後順序,優先順序口訣:

括號成du員第一; 括號運算子zhi() 成員運算子. ->

全體dao單目第二; 所有的單目運算子比如++ -- +(正) -(負) 指標運算*&

乘除餘三,加減四; 這個"餘"是指取餘運算即%

移位五,關係六; 移位運算子:< >> ,關係:> >= <= 等

等於(與)不等排第七; 即== !=

位與異或和位或; 這幾個都是位運算: 位與(&)異或(^)位或(|)

"三分天下"**十;

邏輯或跟與; 邏輯運算子:|| 和 &&

十二和十一; 注意順序:優先順序(||) 低於 優先順序(&&)

條件高於賦值, 三目運算子優先順序排到 13 位只比賦值運算子和","高

逗號運算級最低! 逗號運算子優先順序最低

剩下的你自己同時參考一下2樓和3樓的解釋,問題就應該能解決的比較透徹了!

8樓:

1> 答案是:n = 2;

2> 問題具體分析如下:

(m=a>b)&&(n=c>d) 分析: && 有短路特性,即 m=(a>b) 為假則整個表示式為假,不回計算答(n=c>d) 所以n=2;

3> 測試程式:

#include

int main(int argc, char **argv)else

if((m=ad))

else

return 0;}

c語言中設a=1,b=2,c=3,d=4;執行printf(%d%d%d%d\n",a==b==c,c=a==b,c==(a=b),b=c);的結果是什麼 100

9樓:匿名使用者

c語言提供一種特殊的運算子——逗號運算子。用它將兩個表示式連線起來專。如:

3+5,6+8稱為逗號表示式,又屬稱為「順序求值運算子」。逗號表示式的一般形式為表示式1,表示式2逗號表示式的求解過程是:先求解表示式1,再求解表示式2。

整個逗號表示式的值是表示式2的值。例如,上面的逗號表示式「3+5,6+8」的值為14。又如,逗號表示式a=3*5,a*4對此表示式的求解,讀者可能會有兩種不同的理解:

一種認為「3*5,a*4」是一個逗號表示式,先求出此逗號表示式的值,如果a的原值為3,則逗號表示式的值為12,將12賦給a,因此最後a的值為12。另一種認為:「a=3*5」是一個賦值表示式」,「a*4」是另一個表示式,二者用逗號相連,構成一個逗號表示式。

這兩者哪一個對呢?賦值運算子的優先順序別高於逗號運算子,因此應先求解a=3*5(也就是把「a=3*5」作為一個表示式)。經計算和賦值後得到a的值為15,然後求解a*4,得60。

整個逗號表示式的值為60。

#include void main() { int a=1,b=2,c=3,d=4; printf("%d\n",(a+b,b+c,c+d)); }

10樓:冒牌

這裡的(a+b,b+c,c+d)是一運算表示式,有"+"運算和","運算,printf("%d\n",(a+b,b+c,c+d))就是將這個運算表示式的結果列印到螢幕上。

11樓:彼岸草向陽

printf是輸出函式

(a+b,b+c,c+d)是個逗號表示式,逗號表示式的值為最後一個表示式的值;

printf("%d\n",(a+b,b+c,c+d))表示輸出c+d的值

12樓:匿名使用者

列印a+b的值!和後面的沒關係!!

c語言 main() { char a='1',b='2'; printf("%c",b++);printf("%d\n",b-a)} 結果是什麼?說明一下。

13樓:右傾的墮落主義

答案是:22

分析:char a='1'b='2'; //賦值,注意a b的型別為char

printf("%c",b++); //以字元型列印列印b後b才自加,所以是現打

//印出「2」後

//b的ascii碼值是50,自加後是51printf("%d\n",b-a) //這句是b的ascii碼值減去a的ascii碼值後

//以整型輸出,即51-49=2,所以輸出「2」

14樓:匿名使用者

輸出結果 22

main()

15樓:匿名使用者

22 第一個2是字元第二個2是數字

printf("%c",b++);先輸出b,再b++,b變成'3'了

printf("%d\n",b-a);b-a也就是'3'-'1'=2

在C語言中,執行mainint a 1,b 2,m 0,n 0,k k n bam a b printfd,d n ,k,m執行時警告

n b a m a b 由於這是或,也就是說只要 前面為真,後面就不會執行了。因此會有這樣的警告。與 邏輯或跟與 抄 有部完襲 全運算的,比如在左邊的表達bai式可以決定怎麼個du式子的值時zhi,右邊一個表示式講不在dao執行。例如 表示式1 表示式2 當表示式1等於1時,就不在計算表示式二,會警...

c語言中int a 1,b 3 switch a bcase 1 printfncase 2 1 printfn 對麼?詳解

include int main 這是我自己理解之後寫的,switch語句中case後要加break,case的所有情況寫完後還要加default語句,表示除 內case外的情況發生容時要怎麼做。本程式就沒有等於a b的情況,需要default語句。case 1 printf n break 分號後...

c語言中a1,b2,c43的值為多少

逗號表示式的返回值是最後一個值 因此是43 逗號表示式的一般形式是 表示式1,表示式2,表示式n。其求解過程是 先計算表示式1,最後計算表示式n,最後整個逗號表示式的值為表示式n的值。因此,a 1,b 2,c 43 的值為43.在c語言中 int a 1,b 2,c 3 表示式 a b a b 的值...