Hermione 发表于 2017-10-28 10:21:18

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?

BngThea 发表于 2017-10-28 10:25:11

#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

Hermione 发表于 2017-10-28 11:25:29

明白了,谢谢
页: [1]
查看完整版本: C语言宏定义:#define F(n) n * n + 2,如果是F(3 + 2 * 2),为什么得到21?