• 全部
...

假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是

yerssa 2010-03-24 04:52:52
假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是?

这是让求括号中a>b?a++:b++的值啊还是a+b的值啊?
...全文
给本帖投票
4513 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
右脚小拇指 2010-03-25
  • 打赏
  • 举报
回复
这还算是简单一点的。
因为运算符的优先级还比较清淅

a=5,b=2,a>b?a++:b++,a+b
1:计算a>b?a++:b++,
得到的结果是 a++ 。
2: 计算 a+b, 第一步执行了 a++,
所以到第二步时,a=6; b=2
得到的结果是 8

可能考的重点就在于表达式 a++ 吧
不知名小ITer 2010-03-25
  • 打赏
  • 举报
回复
8,a和b中,总有一个要加1,然后取,号运算符中最右边的一个表达式的值,即为8.
赵4老师 2010-03-25
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。
jbz001 2010-03-25
  • 打赏
  • 举报
回复
刚用vc6.0运行了一下,结果a+b等于8
jbz001 2010-03-25
  • 打赏
  • 举报
回复
可以把这句表达式拆解成这样:
a=5;
b=2;
a+b;
a>b?a++:b++;

因为a++是后加的,就把这个三元表达式放到了后面,况且这个放在后面对结果没有影响。因为a++是最后运行的。

最终结果:
a=7
b=2
ll2323001 2010-03-24
  • 打赏
  • 举报
回复
学习学习哦
huanmie_09 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yerssa 的回复:]
引用 14 楼 huanmie_09 的回复:
引用 13 楼 yerssa 的回复:
引用 12 楼 liu1987lang 的回复:
引用 7 楼 yerssa 的回复:

引用 3 楼 yuzl32 的回复:
逗号表达式,取最右边的值,也就是:a+b

a++不是后加吗?结果怎么是8呢?

a++在前,a+b在后。先做完a++ a的值是6 所以是8

a++不是先把a……
[/Quote]
还没看明白?
(a>b?a++:b++),
这里5>2判断之后表达式取a++的值。
这时a是没有增加啊,还是5,
但执行下一个逗号表达式的时候a已经加1了。
yerssa 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 huanmie_09 的回复:]
引用 13 楼 yerssa 的回复:
引用 12 楼 liu1987lang 的回复:
引用 7 楼 yerssa 的回复:

引用 3 楼 yuzl32 的回复:
逗号表达式,取最右边的值,也就是:a+b

a++不是后加吗?结果怎么是8呢?

a++在前,a+b在后。先做完a++ a的值是6 所以是8

a++不是先把a的值拿去运算,之后,再使a的值+1吗?

a=……
[/Quote]
不看问题呢?
huanmie_09 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yerssa 的回复:]
引用 12 楼 liu1987lang 的回复:
引用 7 楼 yerssa 的回复:

引用 3 楼 yuzl32 的回复:
逗号表达式,取最右边的值,也就是:a+b

a++不是后加吗?结果怎么是8呢?

a++在前,a+b在后。先做完a++ a的值是6 所以是8

a++不是先把a的值拿去运算,之后,再使a的值+1吗?
[/Quote]
a=5,b=2,(a>b?a++:b++),a+b
逗号表达式,计算顺序分解:
a=5;
b=2;
a>b?a++:b++ <==> 5>2=1?a++:b++; <==> a++;
a = 6;
a+b=6+2=8;
yerssa 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 liu1987lang 的回复:]
引用 7 楼 yerssa 的回复:

引用 3 楼 yuzl32 的回复:
逗号表达式,取最右边的值,也就是:a+b

a++不是后加吗?结果怎么是8呢?

a++在前,a+b在后。先做完a++ a的值是6 所以是8
[/Quote]
a++不是先把a的值拿去运算,之后,再使a的值+1吗?
liu1987lang 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yerssa 的回复:]

引用 3 楼 yuzl32 的回复:
逗号表达式,取最右边的值,也就是:a+b

a++不是后加吗?结果怎么是8呢?
[/Quote]
a++在前,a+b在后。先做完a++ a的值是6 所以是8
shen_wei 2010-03-24
  • 打赏
  • 举报
回复
知道怎么做就行了 没有必要研究
tan870426 2010-03-24
  • 打赏
  • 举报
回复
逗号表达式,最右边的即是最后结果~
建议LZ补习一下逗号表达式相关内容
ameyume 2010-03-24
  • 打赏
  • 举报
回复
逗号运算符的优先级最低。
linxingyu404 2010-03-24
  • 打赏
  • 举报
回复
我真觉得学这些东西没有一点用处,开发程序谁会这样写啊,为什么要花大量精力来学这些呢?
yerssa 2010-03-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yuzl32 的回复:]
逗号表达式,取最右边的值,也就是:a+b
[/Quote]
a++不是后加吗?结果怎么是8呢?
  • 打赏
  • 举报
回复
逗号运算符的运算顺序是从左至右运算,返回最后一个表达式的值,LZ按这个思路想就知道答案了。
ameyume 2010-03-24
  • 打赏
  • 举报
回复
关系运算符>的优先级大于三目运算符。
所以,(a>b?a++:b++)
=>
(1?a++:b++)
=>
a++;
所以a=6,
最后a+b=6+2=8.
james_hw 2010-03-24
  • 打赏
  • 举报
回复
感觉这种题得拿着课本来做,工作中遇到这种代码,直接打回重写。
yuzl32 2010-03-24
  • 打赏
  • 举报
回复
逗号表达式,取最右边的值,也就是:a+b
加载更多回复(2)
内容评分
5星
100%
4星
0%
3星
0%
2星
0%
1星
0%

70,018

社区成员

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

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

手机看
关注公众号

关注公众号

客服 返回
顶部