社区
C语言
帖子详情
C语言中关于++符号
lctyn
2009-08-01 12:41:17
int i = 3,j;
j = (++1)+(++i)+(++i);
我觉得结果应该是18,可是我调出来的结果是16,我不明白为什么会得到这个结果,请各位高手指教。
...全文
306
36
打赏
收藏
C语言中关于++符号
int i = 3,j; j = (++1)+(++i)+(++i); 我觉得结果应该是18,可是我调出来的结果是16,我不明白为什么会得到这个结果,请各位高手指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
36 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sky31
2009-08-05
打赏
举报
回复
从右往左执行。
i++ 先得到结果i,然后i+1
++i, i先加1,然后得到结果
mu_yang
2009-08-05
打赏
举报
回复
[Quote=引用 34 楼 mangocookie 的回复:]
强烈反对在一个语句内使用那么多的++
不要说谭浩强害的,
谭浩强在书中的序言部分也写了反对滥用++和--
++和--的要善用,否则就成为了下一个goto
[/Quote]
废话
什么东西可以滥用?
芒果仔
2009-08-05
打赏
举报
回复
强烈反对在一个语句内使用那么多的++
不要说谭浩强害的,谭浩强在书中的序言部分也写了反对滥用++和--
++和--的要善用,否则就成为了下一个goto
pmerOFc
2009-08-05
打赏
举报
回复
int i = 3,j;
j = (++1)+(++i)+(++i);
============================
这是C语言未定义的行为
得到多少都有可能
因为编译器有随意处置的自由
如果编译器的结果是10000
楼主是不是也想问个为什么?
可是编译器并没有违反C语言的规则啊
ibecse
2009-08-05
打赏
举报
回复
[Quote=引用 30 楼 thomas0621 的回复:]
4+5+6=16
[/Quote]
4+5+6怎么会得16了?
ibecse
2009-08-05
打赏
举报
回复
先++后+
thomas0621
2009-08-05
打赏
举报
回复
4+5+6=16
weidong70
2009-08-05
打赏
举报
回复
都是二级考试逼的。
这种题能出N个,每个都有M个答案。
如果是为了应付考试,还是要看一看TC,因为谭浩强的书都要在TC 2.0上用。
PS:楼主下次发贴前最好先在网上搜一下,同类问题很多。
yangyunzhao
2009-08-04
打赏
举报
回复
此问题毫无意义,编译器不同,答案不同。
写这个代码的人,拉出去枪毙5分钟
天地一棵树
2009-08-04
打赏
举报
回复
楼主太强了,问问谭浩强他怎么给你说的,C语言课本,自己学习
bxl1989
2009-08-04
打赏
举报
回复
[Quote=引用 8 楼 hairetz 的回复:]
这种问题,对你学C++没有任何帮助吧。
[/Quote]
同意。
mu_yang
2009-08-04
打赏
举报
回复
[Quote=引用 24 楼 hearoequal 的回复:]
这都是谭浩强害的
[/Quote]
怎么害的?说说?
hearoequal
2009-08-04
打赏
举报
回复
这都是谭浩强害的
mqzhen110
2009-08-02
打赏
举报
回复
[Quote=引用 15 楼 hkwanz 的回复:]
引用楼主 lctyn 的回复:
int i = 3,j;
j = (++1)+(++i)+(++i); //不是1吧,此处只能是变量
我觉得结果应该是18,可是我调出来的结果是16,我不明白为什么会得到这个结果,请各位高手指教。
1.++i=4,i=4
2.++i=5,i=5
3.++i=6,i=6;
4+5+6=16
-------------------
不建议写这样的程序,实在没什么意义
[/Quote]
4+5+6=16?
温瑞安
2009-08-02
打赏
举报
回复
[Quote=引用 18 楼 jelly074100209 的回复:]
最烦这种题了,没意思,难道编程的时候会用到这种代码?
在VC2008环境调试下的结果是:18
根据运算的优先级,先运算括号里的++i,结果i变成6,i*3自然是18了.
[/Quote]
你说的很对顶你!!!
taffy5366
2009-08-02
打赏
举报
回复
权威部门:与编译器有关
温瑞安
2009-08-02
打赏
举报
回复
15楼的仁兄真牛!!!
4+5+6=16都能算出来你是不是小学没毕业,要是有小孩的话回家问问你孩子先
温瑞安
2009-08-02
打赏
举报
回复
int i = 3,j;
j = (++1)+(++i)+(++i);
我觉得结果应该是18,可是我调出来的结果是16,我不明白为什么会得到这个结果,请各位高手指教。
[/Quote]
我用turbo c编译了一下结果是18;楼主你是不是其他那里出错了你检查一下!
刘主任家的伙夫
2009-08-02
打赏
举报
回复
最烦这种题了,没意思,难道编程的时候会用到这种代码?
在VC2008环境调试下的结果是:18
根据运算的优先级,先运算括号里的++i,结果i变成6,i*3自然是18了.
kingtype
2009-08-02
打赏
举报
回复
C区除了这种垃圾题,就没有别的了吗?更有甚者一天到晚装专家来研究编译过程,或者研究到底是哪里不合标准。老师有教你这样写嘛。如果老师有教,你就去抽老师,如果老师没教,你就不要这么写嘛。
加载更多回复(16)
C语言
中
++
和 * 的优先级
本来我想当然的以为在
C语言
中
指针预算符的优先级肯定比
++
高,后来在写程序时发现并没有这么当然。 在
C语言
中
,自增运算符
++
和指针运算符*的优先级关系为 左
++
> * >右
++
比如
++
*i 相当于
++
(*i) ,指针i...
C语言
中
的
++
和--运算符
上述代码打印结果为: 在第二行代码
中
,表达式 j *= i
++
,运算符
++
的优先级高于 *=,因此先计算 i
++
(先使用i,等到当前指令执行结束再自增 i ),当前时刻 i 的值为0,那么 j = j * 0,因此计算出 j = 0;...
【
C语言
进阶剖析】17.
C语言
中
的
++
和 -- 操作符分析
C 语言
中
只规定了
++
和 -- 对应指令的相对执行次序
++
和 -- 对应的汇编指令不一定连续运行 在混合运算
中
,
++
和 -- 的汇编指令可能被打断执行
++
和 -- 参与混合运算结果是不确定的。 笔试面试
中
的“奇葩”题 ...
C语言
中
“
++
“ “--“的使用
递增递减运算符在使用过程
中
,可以放在变量的前面也可以放在变量的后面,置于前面称为前缀形式,置于后面则称之为后缀形式但无论前缀后缀,都是在给变量的值+1或者-1同时应该注意在将带有递增递减的表达式进行使用或...
c语言
中
i=i-1该怎么表示,
C语言
i
++
和
++
i的区别和用法
C语言
中
++
是自增运算符,表示操作数自增1;--是自减运算符,表示操作数自减1。本文以自增运算符
++
为例来介绍它们的用法。自增运算符
++
有两种写法:1)
++
书写在变量之后,如:int i=10;i
++
;2)
++
书写在变量之前,如:...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章