[考题] 计算机概论 程式输出问题

楼主: jolinboyfrie (宇)   2014-07-18 23:28:31
下列以 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这到底是什么意思啊?
作者: flydragon198 (Richard)   2014-07-18 23:29:00
你要先了解 ? : 这个语法,意思是如果a>b为真,则执行a,如果为false,则执行:后的b因为++n被执行两次,所以会是12,一次在printf,一次在#define,这两处
作者: mantoro (小中中)   2014-07-18 23:45:00
宏会替换成++n>m?++n:m
楼主: jolinboyfrie (宇)   2014-07-19 00:40:00
谢谢噢~我聊解了,因为太少看到这样的条件判断式所以

Links booklink

Contact Us: admin [ a t ] ucptt.com