社区
C语言
帖子详情
(++i)+(++i)为什么会多一个
lsy010927
2017-11-14 07:08:47
我用vc6.0运行之后的结果为什么是6不是5???
#include<stdio.h>
main()
{
int i=1;
printf("i=%d",(++i)+(++i));
}
...全文
260
9
打赏
收藏
(++i)+(++i)为什么会多一个
我用vc6.0运行之后的结果为什么是6不是5??? #include main() { int i=1; printf("i=%d",(++i)+(++i)); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
幻想0051
2017-11-16
打赏
举报
回复
第一次 ++i 的时候 i=2了 第二次 ++i 的时候 i=3了 然后两个i相加,这个时候取的值就是改过之后的3, 3+3=6. 感觉有些编译器是不一样的
destory27
2017-11-15
打赏
举报
回复
(++i)+(++i) i= 2 i= 3 3 + 3
CT8100
2017-11-15
打赏
举报
回复
先做括号里面的运算,最后变成3+3
AI_channel
2017-11-15
打赏
举报
回复
未定义顺序,先执行了两次++i!
codedoctor
2017-11-15
打赏
举报
回复
这个和编译器相关,不同编译器的结果都可能不同。属于未定义行为,不要再同一行代码中使用多次++
赵4老师
2017-11-15
打赏
举报
回复
关于C,C++表达式求值顺序
http://blog.csdn.net/fefe82/article/details/37833767
,
http://bbs.csdn.net/topics/370153775
paschen
2017-11-14
打赏
举报
回复
顺序点问题,未定义行为 关于C,C++表达式求值顺序
http://bbs.csdn.net/topics/370153775
自信男孩
2017-11-14
打赏
举报
回复
有歧义性,类似这样的问题有很多,跟编译器有关系,不建议深究,也不建议写这样的代码。比如a = i+++i+++i++;
das白
2017-11-14
打赏
举报
回复
先执行两次++ 再x2
(
++
i)+(
++
i)+(
++
i)和(i
++
)+(i
++
)+(i
++
)问题解答
本文详细解析了C
++
中复杂表达式p=(i
++
)+(i
++
)+(i
++
);和q=(
++
j)+(
++
j)+(
++
j);的计算过程及结果,通过分析i
++
和
++
i的不同计算顺序,揭示了变量在表达式中多次自增的运行机制。
「杂谈」由C/C
++
中(
++
i)+(
++
i)+(
++
i)+(
++
i)表达式的计算结果引申出的疑问
博客讨论了C/C
++
中表达式(
++
i)+(
++
i)+(
++
i)+(
++
i)导致的不同计算结果,解释了这是由于编译器对未定义行为的处理差异造成的。顺序点、副作用和未定义行为的概念被引入,提醒程序员避免写出可能导致不确定性的代码。
C | 一种需要特别留心的编程错误(
++
i) + (
++
i) + (
++
i)
探讨了(
++
i)+(
++
i)+(
++
i)在不同编译器下为何会产生不同的结果,通过VS反汇编探究其内部实现,并对比Linus环境下的差异。
(
++
i)+(
++
i)+(
++
I)问题的解决:
探讨了在C
++
中,不同编译器对自增运算符(
++
i)在表达式中求值顺序的差异,VC2013与Linux环境下结果分别为12和10,解析了这一现象背后的原因及四种实验结果。
java中(
++
i)+(
++
i)=5?而C中(
++
i)+(
++
i)却=6?(i=1) 深层解答:
本文主要探讨Java和C语言中(
++
i)+(
++
i)表达式结果不同的原因。Java采用“即时”求值模型,后
一个
运算通常不影响前
一个
运算对变量值,所以i=1时结果为5;C语言有“结合性”特点,采用“实时”求值,后
一个
运算会影响前
一个
,i=1时结果为6。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章