在真实的C标准中像y++和++y这样的运算是未定义的,和编译器有关系。
但一般认为y++会先使用y值再自加1,++y会先加1再使用y值;
第一次运算时,y++;此时y=1;
x+=++y;时是在y=1的基础上再加1;
所以x=2;
在真实的工作环境中是不允许出现类似x = ++y;或x = y++;这种形式的赋值的;
因为当编译环境不同时可能会出现不可预料的问题。
y++会先使用y值再自加1,++y会先加1再使用y值;第一次运算时,y++;此时y=1;x+=++y;时是在y=1的基础上再加1;所以x=2.
因为y++在逗号之后就变成1 了,++y,没有运行就变成1了所以x=0+2,x=2
http://zhidao.baidu.com/question/44413947.html你看一下这个回答吧,关于逗号运算符,这里不是一个表达式,而是两个。
看了那么多打印,都说y++后y=1,y不是先使用,在加吗?比如:printf(“%d”,y++),如果int y=0,他就输出0.不是应该先使用y=0,进行x+=++y,吗?x不是应该为1吗?答案为什么为2呢?