游戏开发论坛

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: a_Joe

求助:一道c++试题

[复制链接]

154

主题

4567

帖子

4579

积分

论坛元老

Rank: 8Rank: 8

积分
4579
QQ
发表于 2007-5-17 23:25:00 | 显示全部楼层

Re:求助:一道c++试题

考运算符优先级呢

a=a++||a>b++||(c=++a,b++); ...

9

主题

688

帖子

688

积分

高级会员

Rank: 4

积分
688
发表于 2007-5-17 23:36:00 | 显示全部楼层

Re:求助:一道c++试题

看看编译器生成的汇编代码

6

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2007-5-18 08:45:00 | 显示全部楼层

Re:求助:一道c++试题

表达式          计算顺序             结果              计算后abc值
a=a++           a=a  a++              0                     1,0,0
a>b++           a>b  b++             true(a>b=>1>0)         1,1,0
(c=++a,b++)     跳过                 跳过                   N/A

总结:
    在条件表达式中, 似乎只检测按照计算顺序计算出来的第一个值, 如 a=a, a>b 这样的.

3

主题

101

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2009-9-28 17:25:00 | 显示全部楼层

Re:求助:一道c++试题

这道题
首先是, 运算符优先级的问题.
然后是, 右值操作的问题(表达式从右向左);

1

主题

88

帖子

93

积分

注册会员

Rank: 2

积分
93
QQ
发表于 2009-10-1 00:11:00 | 显示全部楼层

Re:求助:一道c++试题

这种题太无聊了

7

主题

48

帖子

128

积分

注册会员

Rank: 2

积分
128
QQ
发表于 2009-11-19 16:11:00 | 显示全部楼层

Re:求助:一道c++试题

a=a++||a>b++||(c=++a,b++);
a++-->false
a>b++(a=1, b=0)-->true因为后面也是或,所以后面的代码不需要执行最后的结构就是 a=1, b=1, c=0

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2009-12-21 14:02:00 | 显示全部楼层

Re:求助:一道c++试题

a=a++||a>b++||(c=++a,b++);
先执行 判断a 为假 然后a++  再判断a>b   此时a为1b为0成立  然后执行b++    因为表达式a>b++为真 所以(c=++a,b++)就不执行了   a,b,c输出结果为1,1,0。

0

主题

19

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2011-1-24 15:22:00 | 显示全部楼层

Re:求助:一道c++试题

这个问题,其实有一个短路求值的概念在里面。
a=a++||a>b++||(c=++a,b++);
你看,a++是0,因此会继续求解a > b++;
此时若依然为0,则再运行后面的逗号表达式,不过这里a > b++已经是true了,因此就不会再求解后面的,因此答案就是1, 1, 0。

不过平常不建议这么写,很容易弄错。

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2011-2-23 23:23:00 | 显示全部楼层

Re:求助:一道c++试题

很多公司自己没出题的水平就到网上抄,结果大部分公司的笔试题都差不多

4

主题

25

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2011-3-2 21:45:00 | 显示全部楼层

Re:求助:一道c++试题

这个题,实际的运行结果和编译器也有关系吧,不同的编译,结果可能都不一样。
如果一段代码中有几段这种表达式,那调试和维护的工作量太吓人了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-6 15:13

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表