讨论一下++的使用
#define product(x) (x*x)int main()
{
int i=3;
int j,k;
j=product(i++);
k=product(++i);
printf("j=%d,k=%d",j,k);
retun 0;
}
我觉得结果应该是:9,42
可是书上却是:9,49
还有大家觉得《程序员面试宝典》这本书怎么样?
我本来在看计算机算法,可是觉得有点枯燥,就翻了下这本书,觉得技巧还是蛮不错,就是书中错误好像太多了。
i++ 是先赋值 再自增
所以j=product(i++);相当于j=(i++)*(i++) 的结果为3*3=9 i自增了两次所以i=5
++i 是先自增 再赋值
所以k=product(i++);相当于j=(i++)*(i++) 第一个括号i=6 第二个括号时i=7 所以此时的i=7
结果就是7*7=49
我这么总觉得是 6*7=42,按我个人的理解,我觉得第二个++i对一个没影响,我们不是先使用的6,然后才计算第二个++i。