永发信息网

c语言的问题e=(++i)+(++i)+(++i)

答案:3  悬赏:0  手机版
解决时间 2021-01-02 23:18
#include
void main()
{
int i=1;
int e;
e=(++i)+(++i)+(++i);
printf("%d %d",e,i);
}为什么这个程序结果是e=10,i=4呢

谢谢三楼了,很有启发哈
最佳答案
第一个i的初值为1,在用之前先自加1,变为2,2再去加第二个i,此时的i值为2,所以是2自加1变为3,也就是2+3=5,5再去加第三个i。此时的i是3,3自加1等于4,也就是最终i=4。。。5+4等于9,再自加1,赋值给e,所以e为10
首先对不起,上面我的回答错误了,我现在改正如下:

我去查阅了大料资料,找到了规律。关于 e=(++i)+(++i)+(++i);是这样执行的,++在i的前面,表示所有的i都是初值1,即题目中的i=1,在用之前需要自加1,上面的表达式是这样执行的,
i首先自加1,此时i==2,此时的表达式为e=i+(++i)+(++i);(只进行自加运算,没有相互加法运算)
此时i再一次自加1,此时变为i=3,此时的表达式为e=i+i+(++i););(只进行自加运算,没有相互加法运算)
然后i再一次自加1变为i==4,此时的表达式为e=i+i+i;(此时不但进行自加运算,还有有相互加法运算,即e=3+3+4)
也就是说最后一步进行了自加和相互之间的加法;如果是写成e=(i++)+(i++)+(i++);i的初值为1的话,e就是为3,i为4,++在后面表示一个表达式里面的所有的i++都在用完之后再自加3次。
我再举一个例子;
再举一个例子,e=(++i)+(++i);如果i=1,那么e就为6,我分析如下
首先i=1,首先自加1,i=2,此时e=i+(++i);
然后再自加1,此时的i=3,此时e=i+i;e=3+3=6;你去运行试试。

另外建议,如果不是很熟悉,建议少用++或--,不同的编译器的执行顺序不同,我是根据visual c++6.0的编译器 的执行规则讲解的。
全部回答
当i不空而且s【i】.date不等于e的时候 i= s[i].cur
这要看编译器来的,这个算法没有标准,我用VS2005输出的e=12;因为他是先把所有的i自加之后再进行加法运算,结果就是4+4+4=12 而输出10可能是这样算的吧 (++i)+(++i)算一个表达式,在执行表达式之前先对变量自加,因此第一次i自加后i=2,然后再计算第2个++i这时i=3,然后再算加法,得到6 最后再算6+(++i),这时应先自加i再求表达式,因此i=4,再加6就得到10。 而VS2005是把i+i+i整个算作一个表达式,你的编译器是把i+i算作一个表达式。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
淘宝上买化妆品到底靠不靠谱,怎么同样的东西
下列句子中加黑的虚词,使用正确的一项是BA.
萍果7转接头单一 的好还是二合一的好
梦见好多核桃
单选题有三个用电器,铭牌均有“220V?60W”的
有一场电影很多香港明星演的,电影里经常会唱
Themotorbike______start,nomatterhowhardhet
单选题下列各句标点符号使用恰当的一项是A.“
小班语言教案诗歌:谁最羞
单选题国家统计局11日发布数据,11月份我国CP
臣字开头的四字成语
提举是什么意思
类似从开始到现在的小说
引嫩入白建管局位置在什么地方啊,我要过去办
塔城地区有教街舞的没
推荐资讯
盘县救助管理站办公地址在什么地方?我要处理
用细线悬挂着的三个小球,将任意两个小球靠近
前男友喝醉酒到单位闹事,我该怎么办,怎么面
蚕结茧后变成什么
一个长方形的长比宽多20%,这个长方形的长和
如何看待某些基督徒把清明祭祖的行为称作“拜
人在多少岁停止长智齿
齐品达烤肉饭(兴城店)地址在哪,我要去那里办
单选题东南亚大部分地区属于A.热带雨林气候和
小学时和爸爸妈妈一起栽种的小树苗和自己一样
单选题下列关于建国初期土地改革运动的评述,
七年级下册课时练数学答案
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?