当前位置: 代码迷 >> C语言 >> printf("%d %d %d %d",i++,i++,++i,++i);求解
  详细解决方案

printf("%d %d %d %d",i++,i++,++i,++i);求解

热度:1065   发布时间:2006-12-26 14:59:48.0
printf("%d %d %d %d",i++,i++,++i,++i);我记得书上好像是说,‘,’也是一种运算符,结合方向是从左到右,且其值等于第一个左边第一个表达式的值。
----------------解决方案--------------------------------------------------------

那是逗号表达式。。。这里的逗号应该算式分隔符了


----------------解决方案--------------------------------------------------------
呵呵!记混了。。。
----------------解决方案--------------------------------------------------------
~~~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


----------------解决方案--------------------------------------------------------
  相关解决方案