问一个关于宏的问题
#include<stdio.h>#define CUBE(x)(x*x*x)
main()
{
int x,y;
x=5;
y=CUBE(++x);
printf("%d\n",y);
}
我看到书上说y的值应该是x自加三次后立方,即8*8*8=512,
但是我调试的时候结果却是392,为什么会是这个结果啊,望大虾们帮忙,谢谢!!
应该是336吧
CUBE(++x) 相当于, ((++x)*(++x)*(++x))
我们来一步一步算:x=5
((++x)*(++x)*(++x))
一:((6)*(++x)*(++x)) 这个时侯x=6
二:((6)*(7)*(++x)) 这个时侯x=7
三:((42)*(++x))
四:((42)*(8)) 这个时侯x=8
结果:336