int a=5,b=0; call_with_max( ++a ,b); call_with_max(++a,b+10)#define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))int a=5,b=0;CALL_WITH_MAX(++a,b); //a被累加二次 为什么?CALL_WITH_MAX(++a,b+10); // a 被累加一次 为什么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 08:05:23

int a=5,b=0; call_with_max( ++a ,b); call_with_max(++a,b+10)#define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))int a=5,b=0;CALL_WITH_MAX(++a,b); //a被累加二次 为什么?CALL_WITH_MAX(++a,b+10); // a 被累加一次 为什么?
int a=5,b=0; call_with_max( ++a ,b); call_with_max(++a,b+10)
#define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))
int a=5,b=0;
CALL_WITH_MAX(++a,b); //a被累加二次 为什么?
CALL_WITH_MAX(++a,b+10); // a 被累加一次 为什么?

int a=5,b=0; call_with_max( ++a ,b); call_with_max(++a,b+10)#define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))int a=5,b=0;CALL_WITH_MAX(++a,b); //a被累加二次 为什么?CALL_WITH_MAX(++a,b+10); // a 被累加一次 为什么?
你可以看#define CALL_WITH_MAX(a,b) f((a)>(b)?(a):(b))
你看到程序代码中有CALL_WITH_MAX(a,b)的你就先直接用f((a)>(b)?(a):(b))表达式代替了.然后来看.比如你的程序代替过后是
f((++a)>(b)?(++a):(b));
f((++a)>(b+10)?(++a):(b+10));
现在应该能看懂了吧- :运算符就是先判断?前面的表达式是否为真,为真的话就运行:前面的代码,否则就运行:后面的代码