当前位置: 代码迷 >> C语言 >> [问题已解决][求助]一道简单的题
  详细解决方案

[问题已解决][求助]一道简单的题

热度:83   发布时间:2006-08-03 13:21:46.0

main()
{ int i=3,c;
c=(i++)+(++i)+(i++);
printf("%d",c);
}
首先说明,写这种程序的人就是害人!所以请大家不要模仿!
大家先来看看这个吧!
第一main()
{int i=3,c;
c=(i++)+(i++)+(i++);
printf("%d",c);
}
有的系统是按照自左至右顺序求解括弧内的运算,表达式相当于3+4+5=12,而其他一些系统(一般用TUOBO C,WIN-TC,MSCD等)把3作为所有表达式的i值,所以就是3+3+3=9。
所以建议大家这样做:
main()
{int i=3,m,n,t,c;
m=i++;
n=i++;
t=i++;
c=m+n+t;
printf("%d,%d,%d,%d",m,n,t,c);
}
显示结果为:3,4,5,12


----------------解决方案--------------------------------------------------------
第二main()
{int i=3,c;
c=(++i)+(++i)+(++i);
printf("%d",c);
}
而这个呢。系统先把i自加三次,然后就是6,然后再三个相加,就是18。
最好写成下面这个:
main()
{int i=3,m,n,t,c;
m=++i;
n=++i;
t=++i;
c=m+n+t;
printf("%d,%d,%d,%d",m,n,t,c);
}
显示结果为4,5,6,15
所以我给这个题的评论就是:乱搞。如果没说错的话,它这个题应该是我说的后者,先自加1,然后再相加,就是4
+4+4=12这也是我唯一想到答案是12的原因!




----------------解决方案--------------------------------------------------------

原因是:表达式(i++)的值是i;


----------------解决方案--------------------------------------------------------
基础都没打好!!
是4+4+4
( )优先及高

()+()+()
先算()里面的
i++,++i有区别.
但是结果都为4
所以是4+4+4=12
----------------解决方案--------------------------------------------------------

15楼的兄弟你好!
我运行了一下你的程序,结果不是30,是26啊!
这是怎么回事?


----------------解决方案--------------------------------------------------------
正确的解释是:在编译的时候对一整行代码进行扫描,因为有++i, 所以i的值为4,c的结果就是12,如果有2个++i则扫描后结果为5.
----------------解决方案--------------------------------------------------------


----------------解决方案--------------------------------------------------------
基础都没打好!!
是4+4+4
( )优先及高

()+()+()
先算()里面的
i++,++i有区别.
但是结果都为4
所以是4+4+4=12
----------------解决方案--------------------------------------------------------
基础都没打好!!
是4+4+4
( )优先及高

()+()+()
先算()里面的
i++,++i有区别.
但是结果都为4
所以是4+4+4=12

=============
shuo hua bu yao zhe m ke bo hao bu, ru guo ni jue de ni hen li hai, wo gei ni chu ge wen ti.....

zuo ren yao hou dao




----------------解决方案--------------------------------------------------------
,我错了向大家道歉!
----------------解决方案--------------------------------------------------------
  相关解决方案