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

詳解 (共 10 筆)

#4140718

iostream -> C++ not for C


3
0
#2150921
原本答案為A,修改為D
(共 13 字,隱藏中)
前往觀看
1
0
#2150922
原本題目:26. 有關以下 C 語言撰寫...
(共 503 字,隱藏中)
前往觀看
1
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

62dffd441006b.jpg

62dffd53060c7.jpg

'()' 的優先順序(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
#2148510
D
(共 3 字,隱藏中)
前往觀看
0
1
#1413569
原本題目:26. 有關以下 C 語言撰寫...
(共 367 字,隱藏中)
前往觀看
0
0
#1413572
原本題目:26. 有關以下 C 語言撰寫...
(共 503 字,隱藏中)
前往觀看
0
0
#3247315
請問為何失敗?https://ideon...
(共 195 字,隱藏中)
前往觀看
0
0