问下c 带参数的宏后边如果有逗号是什么意思,例如int x=3 #define f(x)=x*x,x x最后的f(

问题描述:

问下c 带参数的宏后边如果有逗号是什么意思,例如int x=3 #define f(x)=x*x,x x最后的f(
那个f(x)是多少呢?为什么?那个#define f(x) x*x,x+x貌似是手机问题,看不到那个加号…
但是我测试的时候为什么f(3)=9,f(3)+f(3)=9,f(3)*f(3)=9,这又是什么原因呢?这样的话不是程序是按照x*x进行的计算么?又怎么会是取右进行运算呢?
1个回答 分类:综合 2014-10-04

问题解答:

我来补答
x*x,x+x
逗号表达式 右侧表达式
优先级:*> +> => ,
补充答案:
对于你的提供的
#define f(x) x*x,x+x
int x=3
您提供的表达式f(x)=x*x,x+x根据逗号表达式的右结合性,它取x+x的值为6
您提供的表达式f(x)+f(x)=x*x,x+x+x*x,x+x根据逗号表达式的右结合性,它取x+x的值为6
您提供的表达式f(x)*f(x)=x*x,x+x*x*x,x+x 根据逗号表达式的右结合性,它取x+x的值为6
如果您一定要得出答案为9的话可以写出如下算法:
#define g(x) f(x)=x*x,x+x
int x=3
您提供的表达式f(x)=x*x,x+x等号的优先级高于逗号,f(x)的值为9,g(x)的值为x+x为6
 
 
展开全文阅读
剩余:2000