# define MA(x,y) (x)*(y) int i=2; i=3/MA(i,i+2)+5; printf(“%d”,i); 输出是什么,为什么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 05:55:37
# define MA(x,y) (x)*(y) int i=2; i=3/MA(i,i+2)+5; printf(“%d”,i); 输出是什么,为什么?
xQKJ@J@ƊJ[M E iD@.efWRgdŕ+U\pG|]r<ܸvǎ$F8/ "ԁ&6SL}@8 $txҦMP>%*%yOZQ`&̙2Z$<6k[7R@1]%BfZ t8bErd܊VԿ?W߰|0 6{tGPsYjAQO&44X eL9 أ+

# define MA(x,y) (x)*(y) int i=2; i=3/MA(i,i+2)+5; printf(“%d”,i); 输出是什么,为什么?
# define MA(x,y) (x)*(y) int i=2; i=3/MA(i,i+2)+5; printf(“%d”,i); 输出是什么,为什么?

# define MA(x,y) (x)*(y) int i=2; i=3/MA(i,i+2)+5; printf(“%d”,i); 输出是什么,为什么?
i=3/MA(i,i+2)+5;
经过宏替换后:
i=3/(i)*(i+2)+5;
由于在此之前,i=2,所以
3/(i)*(i+2)+5
就成了
3/2*4+5
由于参与运算的都是整数,所以结果也是整数,即:
3/2的结果就是1,因此,表达式就变成了:
1*4+5
也就是9