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
----------------解决方案--------------------------------------------------------
,我错了向大家道歉!
----------------解决方案--------------------------------------------------------