C语言中关于宏定义的一道计算题

设有宏定义:#define F(N) 2*N,则表达式F(2+3)的值是7这道题是怎么算的,我只懂这种题目。#define A 5然后下面的5就全用A替代了

首先宏只负责替换,不负责计算。题目中替换后就是2*2+3 =7,他不会帮你计算2+3=5,而只是把2+3放到应该替换的地方
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-02
按宏定义展开后,F(2+3)成为这样:2*2+3=7。这个宏定义的错误是没有在2*N上加括号,这样造成的2义性在程序当中是很难发现的。
第2个回答  2019-04-29


往左边算
j开始是2
j++就是
2
但是
j变成3了
++j的
值是4
j变成4了
j++就是
4
所以
等号右边一共是
2+3+4=9
m+=
9
所以
m是11了