C语言宏定义:#define F(n) n * n + 2,如果是F(3 + 2 * 2),为什么得到21?
C语言宏定义:#define F(n) n * n + 2,如果是F(3 + 2 * 2),我以为应该是3 * 3 + 2 + 2 * 2 = 15,为什么得到21?#define F(n) n * n + 2,如果是F(3 + 2 * 2),我以为应该是3 * 3 + 2 + 2 * 2 = 15,为什么得到21?
宏定义只是直接替换而已,并不会给你智能的添加括号,
所以编译器翻译为
3 + 2 * 2 * 3 + 2 * 2 + 2 = 21 明白了,谢谢
页:
[1]