读书人

C 语言2个简单有关问题预编译中的

发布时间: 2012-04-09 13:41:25 作者: rapoo

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++;}
[解决办法]
探讨

[Quote=引用:]

为什么DCBA不发生替换呢?我有点晕了,D是不替换,但是CBA不是还可以换成DCBA吗?

读书人网 >C语言

热点推荐