define定义,请解答

img


为什么c的数值是7而不是9,n是2,m就是4,c就是9不应该吗?

difine怎么定义的,就原封不动的替换
n + 2 原封不动的替换 c = 2 * m + 1 中的 m,记住是 n + 2 而不是 (n + 2)
所以就得到:c = 2 * m + 1 = 2 * n + 2 + 1

再拓展一下
如果是 i <= 2 * c 的话,就是 2 * c = 2 * 2 * m + 1 = 2 * 2 * n + 2 + 1
如果是 i <= c * 2 的话,就是 c * 2 = 2 * m + 1 * 2 = 2 * n + 2 + 1 * 2

#define定义后就是单纯的替换,即#define c 2m+1 其实是#define c 2n+2+1

是的 一定要注意 define只是单纯得替换,不会给你把变量m当成整体处理,而是直接把m替换下来,就像搂上说的

所以像这种运算宏我一般会在右边的实现加一层括号,这样就能像变量一样去使用。