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替换下来,就像搂上说的
所以像这种运算宏我一般会在右边的实现加一层括号,这样就能像变量一样去使用。