----------------解决方案--------------------------------------------------------
那是逗号表达式。。。这里的逗号应该算式分隔符了
----------------解决方案--------------------------------------------------------
呵呵!记混了。。。
----------------解决方案--------------------------------------------------------
~~~6楼把我说昏了`~~
既然`~++ 优先于 =
那么~~i++~应该由0变到1~~
即i==1`~
这时赋给a的值怎么是0呢`~~
----------------解决方案--------------------------------------------------------
14楼,你理解错了
++是优先与=
但是i++是参与运算之后自增1,++i是在i参与运算之前就进行自增1
这个就是它们区别
----------------解决方案--------------------------------------------------------
printf("%d %d %d %d",i++,i++,++i,++i);求解int main()
{
int i=0;
printf("%d %d %d %d",i++,i++,++i,++i);
getch();
return 0;
}
输出结果3 2 2 1
红色的部分是个输出函数,所以就没有什么","运算符的作用了
++优先于=,所以应该右结合,从右到左运算
++i是在运算之前自增1,于是i由0变成了1,之后一样第二个i也先自增成2
而第三个是i++,它是运算之后自增1,也就是第三个i现在还是第二个i的值2
但是第四个i是前一个i自增后的值,则变成了3.....
于是输出的结果是3 2 2 1
不知道这样解析你明白了没有?
----------------解决方案--------------------------------------------------------
谢楼上各位了,基本明白了
----------------解决方案--------------------------------------------------------
可是在VC中运行结果是2,2,2,1呀,为什么?
----------------解决方案--------------------------------------------------------
恩 我也用vc试了下,果然是2 2 2 1,而且之后再输出i的值是4.
----------------解决方案--------------------------------------------------------
printf("%d,%d,%d,%d",a,b,c,d) TC的计算顺序 是 d c b a
----------------解决方案--------------------------------------------------------