作者guanrulee (Cobra)
看板Grad-ProbAsk
标题[理工] C++的问题
时间Fri Jun 26 00:53:04 2009
请问
a = 22
c = ++a + ++a;
答案是多少呢?
我觉得是
c = (22+1) + (23+1)
= 23 + 24
= 47
但是有人说是
c = 24 + 24
意思是说 在加号运算以前 後面的a++就已经运算了吗?
就会被判定为24然後再相加吗?
请问现在的c++是怎麽设定的呢?
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.208.190
1F:推 bighead319:你自己写个C程式run一次不就知道了 06/26 00:57
2F:推 SONGya168:标题: 科目-问题所属章节或类型 ex: 程式语言-C++ 06/26 01:05
3F:推 fish0835:因为++a的优先权为这个叙述之最高! 06/26 01:38
4F:→ fish0835:所以先执行两次的++a才将两个a加起来!答案是48~ 06/26 01:38
5F:推 FRAXIS:严格来说是不会有答案的.. 因为是未定义行为 06/26 08:22
6F:推 sasbluesea:undefined behavior 06/26 11:48
8F:→ clement80161:这个网址讲得不错 06/26 12:51
话说今年台科电子面试就考这种的...
不知道真的遇到题目的时候 这类型题目该如何计算
※ 编辑: guanrulee 来自: 61.228.208.209 (06/26 14:46)
9F:→ ssccg:面试的话当然是回答未定义行为,顺便抱怨这种题目很无聊啊 06/26 20:50
老师有执行c++告诉我答案错了...
※ 编辑: guanrulee 来自: 220.139.209.134 (06/26 22:29)
10F:→ RULELOSER:执行过 答案是...47 06/27 00:27
11F:→ ssccg:老师执行结果又不重要,换个compiler答案就不一样了 06/27 02:37
XD 我用上面板友说的C 结果出来答案是48..
※ 编辑: guanrulee 来自: 61.228.203.171 (06/27 13:58)
12F:推 MysterySW:C++板十诫之九 06/27 22:10