C语言中关于++符号

lctyn 2009-08-01 12:41:17
int i = 3,j;
j = (++1)+(++i)+(++i);

我觉得结果应该是18,可是我调出来的结果是16,我不明白为什么会得到这个结果,请各位高手指教。
...全文
306 36 打赏 收藏 转发到动态 举报
写回复
用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;楼主你是不是其他那里出错了你检查一下!
  • 打赏
  • 举报
回复
最烦这种题了,没意思,难道编程的时候会用到这种代码?
在VC2008环境调试下的结果是:18
根据运算的优先级,先运算括号里的++i,结果i变成6,i*3自然是18了.
kingtype 2009-08-02
  • 打赏
  • 举报
回复
C区除了这种垃圾题,就没有别的了吗?更有甚者一天到晚装专家来研究编译过程,或者研究到底是哪里不合标准。老师有教你这样写嘛。如果老师有教,你就去抽老师,如果老师没教,你就不要这么写嘛。
加载更多回复(16)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧