執行下面程式中的輸出語句後,a的值是20,為什麼

2022-11-28 12:26:17 字數 3189 閱讀 4984

1樓:小小不服

#include

int main ()

int a=1 ;

printf("%d %d %d\n",(a=3*5,a*4,a+5),a,30);

看看這個 吧

試試這個 你就會知道 首先第一個%d 對應的是,之後的 第一個 表示式的 值 是吧 ?而不是a的值

這點要知道  那麼 得出的結果 是不是20  記住 第一個%d 對應的是整個表示式的值 (不然你看看第三個%d 對應的是哪個 ?對應的是30

輸出結果為

20 1 30

這個 答案是在編譯器下進行的 非我亂說

我的這個式子是給a賦值了的 所以是1

你的那個程式沒賦值 所以 是初始化之前的 值  不確定是多少

各個編譯器不同 吧  我報上我的編譯器

c-free   dev-c++ 兩個編譯結果都是我所述說的

對於其他的 我不敢保證  至於你有怎麼想法 拿起自己的編譯器 寫個程式 好過在這裡問

學c語言 沒有個編譯器 ?

我只能說兩個字  呵呵

2樓:

輸出的是逗號表示式,結果為最後一個表示式的結果,3*5+5=20

3樓:匿名使用者

首先a=5;

執行a=3*5

得a=15,且a=15的表示式值為15

原表示式變為

(15,a*4),a+5

計算a*4,但沒有影響a的值

整個表示式值為第二個表示式的值

原表示式變為

60,a+5

計算a+5,得20

原表示式變為

60,20

逗號表示式的值為最後一個表示式的值

整個表示式的值為20

4樓:匿名使用者

前面就是給a賦值 然後把這個值給到了最後 所以就是20了

5樓:手機使用者

是15以下程式執行結果為:

20a=15

main ()

6樓:月庭竹影

樓上貌似有對的,樓主多在編譯器上試試就知道了

7樓:匿名使用者

是15.

你自己確定是15就是15撒,相信自己的。樓主不夠果斷不夠自信啊。

你自己都察覺到了題目問的是a的值而不是輸出的值。難道還不能確定麼?

題:執行下面程式中的輸出語句後,a的值是() main () {int a ; printf("%d\n",(a=3*5,a*4,a+5));}

8樓:匿名使用者

輸出語句後,a的值為15,列印到螢幕上的為逗號表示式的結果20。

9樓:匿名使用者

這個主要是逗號表示式的計算

逗號表示式的要領:

(1) 逗號表示式的運算過程為:從左往右逐個計算表示式。

(2) 逗號表示式作為一個整體,它的值為最後一個表示式(也即表示式n)的值。

(3) 逗號運算子的優先順序別在所有運算子中最低。

所以,你的那個表示式(a=3*5,a*4,a+5),先計算a=3*5;這時a=15了,然後計算a*4=60,再計算a+5=20;逗號表示式的值為最後一個表示式的值,所以(a=3*5,a*4,a+5)=20

你的程式最後列印20

10樓:大白講大白

執行程式後 a=15.

printf("%d\n",(a=3*5,a*4,a+5);中只有a=3*5對a進行了賦值操作,後面有關a的計算,對變數a本身沒有影響。

11樓:手機使用者

%是取餘,/是除。根據逗號原理,輸出的是最後一個表示式的值。所以選c.

執行下面程式中的輸出語句後,a的值是().

12樓:戚文柏

答案:a

分析:main()

13樓:匿名使用者

24 選b

逗號運算,但是後面的和a沒啥關係(不是賦值運算)

14樓:祥龍九霄

d 由於printf語句中的是逗號表示式(逗號表示式執行的是最後一個逗號之後的表示式),實際上輸出的是a + 5,在之前已經執行了a = 4 * 6 和 a * 2,此時a等於 48,再加5結果是53.

15樓:匿名使用者

答案是24,a=4*6=24.

這麼簡單。

後面什麼a*2呀,a+5呀,都不改變a的值

執行下面程式中的輸出語句後a的值是? #include void main()

16樓:幸運的

括號裡面是逗號表示式,從左往右運算,整個逗號表示式的值是最後一個決定的,所以首先a=15,然後中間個60,最後一個20,所以a=20

題:執行下面程式中的輸出語句後,a的值是() main () {int a ; printf("%d\n",(a=3*5,a*4,a+5));}

17樓:

先給a賦值為15

然後a*4得60

最後a+5得20

而整個逗號表示式的值永遠是最後一個表示式的值,這裡是a+5為20,所以返回20

下面這個連結說的很清楚

18樓:來根黃瓜不切片

這是逗號運算 a=15 , 60(a仍然是15), 20(a仍然是15)

最後結果應該是20

19樓:

(a=3*5,a*4,a+5)是逗號表示式,逗號表示式的值=最後一個元素的值,這裡就是a+5的值,而a=3*5,所以a+5=20,輸出20

20樓:匿名使用者

結果是20。

逗號運算應該取其最後一個表示式的值,所以結果是20。

陣列定義:int a[ ]={11,22,33,44,55,66,77,88,99};則執行下列幾個語句後的輸出結果是什麼?

21樓:匿名使用者

迴圈陣列,如果陣列的元素整除3的話就列印出來

結果是:33 66 99

執行以下程式後輸出的結果是mainint y 10 do ywhileyprintfd n ,y

y最終值為 1 y 是先抄作運 bai算然後減變 du量值 y是先減變數值然後再作運算zhi printf d n y 運算到這裡時,y是的dao值為0,由於是先算後減,所以在輸出y值後,再作減1運算,就成了 1 如果 y的初始值是不是偶的話,那就是死迴圈了.以下程式的輸出結果是 define mi...

下列程式執行後的輸出結果是c語言,以下程式執行後的輸出結果是

n j n t 1就是把n t 的值加上1賦給n j 首先迴圈 for t 0 t 3 t n t 0 之後,n 0 n 1 n 2 0,這是一個清零的操作 接下來是一個巢狀迴圈 因為k 2,所以for t 0 t for j 0 j 3 j n j n t 1 依次給n 0 n 1 n 2 賦予新...

為什麼程式只執行IF中的語句啊,為什麼程式只執行第一個IF中的語句啊?

應該是你最後的一個else除了問題,系統不清楚你的這個else是屬於哪個if的,你試一下加一些花括號區分一下 如果optype aaa cardstate 2 的話就會全部不成立啊 試試這樣 if optype delate cardstate 2 else if optype update car...