当前位置: 代码迷 >> C语言 >> 求助:关于i++
  详细解决方案

求助:关于i++

热度:313   发布时间:2008-06-10 20:05:38.0
求助:关于i++
i++ 的加1是在什么地方加的?
举个例子,刚看到的:
int i=1,s;
s=(i++)+(++i);
pringf("%d,%d",s,i);

第二行中的++i中的i的值是1还是已经变成2了?
这和编译器有关吗?
搜索更多相关的解决方案: 编译器  

----------------解决方案--------------------------------------------------------
用vc6.0编译,结果是4,3
但是

main()
{int i=1;
s=(i++)+(++i)+(i--);
printf("%d,%d",s,i)}

的结果是6,2
----------------解决方案--------------------------------------------------------
i++是i=i+1
i++是先取i,在+1。
++i是先+1,在取i。
----------------解决方案--------------------------------------------------------
s=(i++)+(++i);

根据《易学C++》里面的口诀,增量运算优先级在+之前,况且已经有了括号。所以i++的时候,i的值变为2,但是(i++)这个表达式的结果仍然是1。从左到右运算,i为2的时候(++i)的表达式结果为3,i的值也变为3。
所以最后输入s为4,i为3。
----------------解决方案--------------------------------------------------------
看着这点东西就烦。。还不如直接用i=i+1好了。看上去都舒服。。
----------------解决方案--------------------------------------------------------
我也反感这种语句,但无奈的是总能看见有的题这样写
请问p1s:
main()
{int i=1;
s=(i++)+(++i)+(i--);
printf("%d,%d",s,i)}

的结果是6,2
按照你说的,结果应该是7,2啊,怎么回事?
----------------解决方案--------------------------------------------------------
[bo][un]lqcheng[/un] 在 2008-6-11 22:50 的发言:[/bo]

我也反感这种语句,但无奈的是总能看见有的题这样写
请问p1s:
main()
{int i=1;
s=(i++)+(++i)+(i--);
printf("%d,%d",s,i)}

的结果是6,2
按照你说的,结果应该是7,2啊,怎么回事?


结果是6和2,没有错啊。 怎么加减的运算都算不清?
----------------解决方案--------------------------------------------------------
很恶心的代码
----------------解决方案--------------------------------------------------------
  相关解决方案