26. 有關以下 C 語言撰寫之程式,下列敘述何者正確?
#include <stdio.h>
#include <iostream>
main()
{
int a, b, c, d;
c=(a=2, 3* a);
d=(a=b=2, 4* b);
printf(''%d, %d, %d, %d'', a, b, c, d);
system(''PAUSE'');
}
(A)執行後輸出 2,2,6,8
(B)執行後輸出 2,2,2,2
(C)執行後輸出 2,4,6,8
(D)編譯後顯示錯誤訊息
答案:登入後查看
統計: A(111), B(25), C(36), D(119), E(0) #1187176
統計: A(111), B(25), C(36), D(119), E(0) #1187176
詳解 (共 10 筆)
#4140718
iostream -> C++ not for C
3
0
#1408065
此題缺題目
#include
#include.h>
main() .h>
{
int a, b, c, d;.h>
c=(a=2, 3* a); .h>
d=(a=b=2, 4* b); .h>
printf('%d, %d, %d, %d', a, b, c, d); .h>
system('PAUSE');
}.h>
1
0
#5570947


'()' 的優先順序(Operator precedence) 高於 '='
然後 '()' 的相依性是由左至右 所以'()' 內總是會回傳最右邊的值
至於 ' , ' comma 的優先順序是最低的,作用只是分隔參數,不用管它
所以
c=(a=2, 3* a); 就是最右邊的值被返回 3*a = 6
d=(a=b=2, 4* b); 最右邊的值被返回 4*b = 8
'=' 的相依性是由右至左,所以是先 b = 2 再 a = b (2先賦值給b,b再賦給a)
參考
1
0
#4057684
為什麼錯誤?
0
0