C 语言2个简单问题,预编译中的
我想问2个很简单的问题,但我想不明白:
1. # define N 2
#define M N+1
#define NUM (M+1)*M/2
int i,n;
for(i=1,n=0;i<=NUM;i++) {
n++;
}
请确定执行次数
我想问这个最后结果为什么是8, 我知道不能一步一步的算出来,所以应该把这个 (M+1)*M/2 转换为 :(N+1+1)*N+1/2, 但是为什么最后是先处理的(N+1+1)*N这个部分,再处理的1/2,而不是把 N+1/2最为一个部分处理呢?毕竟在原式子中M/2是一个整体啊,可以这样就分开了吗?
2. #def A BA
#def BA CBA
#def CBA DCBA
A
BA
CBA
DCBA
为什么这个的最后结果都是DCBA呢?前3个可以理解,为什么最后DCBA的结果也是DCBA而不是DDCBA呢?
[解决办法]
预处理之后
- C/C++ code
int i , n;for (i = 1, n = 0; i <= (N + 1 + 1) * N + 1 / 2; i++) { n++;}/* N */int i , n;for (i = 1, n = 0; i <= (2 + 1 + 1) * 2 + 1 / 2; i++) { n++;}
[解决办法]