24小时热门版块排行榜    

查看: 943  |  回复: 12

duzongyin

银虫 (小有名气)

[求助] 请教

#include
main()
{
   int a;
   a=1;
   b=++a+ ++a+ ++a;
   printf("%d\n",b);
}
请教此输出结果是多少?并请教如何计算的...谢谢
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

★ ★
余泽成(金币+2): 谢谢参与应助! 2012-03-11 23:25:41
网上抄了一段,你可以去翻下标准确认下,嗯

"Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be accessed only to determine the value to be stored."

"This paragraph renders undefined statement expressions such as
i = ++i + 1;
a[i++] = i;
while allowing
i = i + 1;
a = i;"

简单地讲就是:同一个表达式如果多次改变同一个变量的值,行为未定义。你给出的是一个最典型的情况,因此,在不同编译器编译出来的结果,甚至是同一个编译器不同优化选项的编译结果,都可能得到不同的结果。

然后,如果面试被问到这个题,说出上面那段话应该就挺好的。如果是在试卷上看到,那么那个试卷可以扔进垃圾堆
2楼2012-03-05 17:16:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)


余泽成(金币+1): 鼓励讨论! 2012-03-11 23:25:51
引用回帖:
2楼: Originally posted by sudo at 2012-03-05 17:16:29:
网上抄了一段,你可以去翻下标准确认下,嗯

"Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression. Furthe ...

恩,这个就好比编译器的方言,各地不同。
很女子很弓虽大
3楼2012-03-05 19:00:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

denganliang

银虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg(金币+1): 感谢应助 2012-03-08 01:59:10
你变量b怎么没有声明啊!!!
欢迎大家访问我的网站:http://aizaoqi.com
4楼2012-03-06 09:16:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

十年磨练

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg(金币+1): 感谢应助 2012-03-08 01:59:16
应该输出12
因为这要考虑运算符号的优先顺序,++比+的的优先级别高,先算++,即a进行了三次自加一的a=4,然后计算b的值,即b等于三个四相加:b=12
时刻保持虚心学习的态度
5楼2012-03-06 13:27:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duzongyin

银虫 (小有名气)

引用回帖:
: Originally posted by denganliang at 2012-03-06 09:16:23:
你变量b怎么没有声明啊!!!

是的 犯错了 呵呵
6楼2012-03-06 19:10:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duzongyin

银虫 (小有名气)

引用回帖:
: Originally posted by sudo at 2012-03-05 17:16:29:
网上抄了一段,你可以去翻下标准确认下,嗯

"Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression. Furthe ...

非常感谢 这个问题我想了很成时间一直没有相处是怎么回事...
7楼2012-03-06 19:11:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duzongyin

银虫 (小有名气)

引用回帖:
: Originally posted by 十年磨练 at 2012-03-06 13:27:11:
应该输出12
因为这要考虑运算符号的优先顺序,++比+的的优先级别高,先算++,即a进行了三次自加一的a=4,然后计算b的值,即b等于三个四相加:b=12

谢谢 按理说是这样的,但是在编译器上不是这样..非常感谢...
8楼2012-03-06 19:12:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

★ ★
余泽成(金币+2): 鼓励讨论! 2012-03-11 23:26:11
引用回帖:
8楼: Originally posted by duzongyin at 2012-03-06 19:12:13:
谢谢 按理说是这样的,但是在编译器上不是这样..非常感谢...

这个题如果这么问才有意义

d = ++a+++b+++c

或者来这个

c = a+++++b

不符合标准的问题是没有意义的,undefined behavior的意思是编译器怎么做都有道理

上面的问题符合标准了,虽然仍然实际程序不会这么做,会使得程序可读性差
9楼2012-03-07 09:19:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duzongyin

银虫 (小有名气)

引用回帖:
: Originally posted by sudo at 2012-03-07 09:19:16:
这个题如果这么问才有意义

d = ++a+++b+++c

或者来这个

c = a+++++b

不符合标准的问题是没有意义的,undefined behavior的意思是编译器怎么做都有道理

上面的问题符合标准了,虽然仍然实际程序不 ...

如果这样的活就是一个表达式中有四个变量了(d=++a+++b+++c)若赋初值的话如a=b=c=1,d=6吗 还有若是第二个式的话 应怎么处理前缀和后缀运算呢?谢谢
10楼2012-03-07 16:14:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 duzongyin 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 6/300 2026-08-06 20:19 by 苏知砚
[基金申请] 固定端突然变了,今天 +3 archvillain 2026-08-06 6/300 2026-08-06 20:11 by olivermiaoer
[基金申请] 听说今天filecode变了 +12 布布和一二 2026-08-06 25/1250 2026-08-06 19:37 by wdc28
[基金申请] 基金中了 +4 laoda193707 2026-08-06 4/200 2026-08-06 18:56 by olivermiaoer
[基金申请] filecode +7 布布和一二 2026-08-06 10/500 2026-08-06 16:22 by janehuiminli
[基金申请] filecode +8 等待解的谜 2026-08-06 12/600 2026-08-06 16:11 by janehuiminli
[有机交流] 一个有机合成实验室都需要哪些设备? 50+3 kf2781974 2026-07-31 12/600 2026-08-06 15:11 by eddyin
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[教师之家] 咨询面上基金 +4 李长云 2026-07-31 7/350 2026-08-06 11:20 by 李长云
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 面上再次挂了,太难了,躺也躺不了,倦也卷不过,小学校之殇! +22 低垂的野花 2026-07-31 30/1500 2026-08-05 18:03 by 低垂的野花
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 4/200 2026-08-05 09:59 by lfy8008
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[论文投稿] 十年后又回来了,论文投稿求助 +3 哈哈114477 2026-08-01 3/150 2026-08-04 15:40 by tegsgjy20
[基金申请] 纯娱乐,不喜欢勿喷 +7 Tide man 2026-08-04 10/500 2026-08-04 15:10 by loufangrui
[基金申请] 面上提前没消息,有中的吗 +14 archvillain 2026-08-02 18/900 2026-08-04 14:42 by archvillain
[基金申请] 娱乐 +4 Tide man 2026-08-03 4/200 2026-08-04 11:51 by wgch518
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见