計算機概論 程式輸出問題 - 考試

Table of Contents

下列以 C 程式語言撰寫之程式執行後產生之輸出為何?
#include <stdio.h>
#define MAX(a, b) a>b?a:b
int main()
{
int m = 10, n = 10;
printf("%d", MAX(++n, m));
return 0;
}
a.10 b.11 c.12 d.13
答案為C

想請問一下各位,MAX(++n,m)意思是說要把n+1再帶出去
那帶到上面MAX a=11,b=10,接下來a>b?a:b這到底是什麼意思啊?

--

All Comments

Blanche avatarBlanche2014-07-21
你要先了解 ? : 這個語法,意思是如果a>b為真,則執
行a,如果為false,則執行:後的b
Sandy avatarSandy2014-07-25
因為++n被執行兩次,所以會是12,一次在printf,一次
在#define,這兩處
Jack avatarJack2014-07-29
巨集會替換成++n>m?++n:m
Zora avatarZora2014-07-31
謝謝噢~我聊解了,因為太少看到這樣的條件判斷式所以