35. 若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是( )。
答案:3 悬赏:20 手机版
解决时间 2021-11-17 03:08
- 提问者网友:临风不自傲
- 2021-11-16 14:01
35. 若有定义:int a,b;则表达式(a=2,b=5,a*2,b++,a+b)的值是( )。
最佳答案
- 五星知识达人网友:未来江山和你
- 2021-11-16 15:11
逗号表达式从左向右依次计算,最终的值等于最后一个表达式的值。
因此a=2,b=5,b++=6,a+b=2+6=8,最终值为8。
因此a=2,b=5,b++=6,a+b=2+6=8,最终值为8。
全部回答
- 1楼网友:佘樂
- 2021-11-16 16:38
选择B
整体为逗号表达式,逗号表达式的值由最末项决定,即a+b
a=2,b=5这两个子表达式分别将ab赋值为2和5
a*2子表达式没有任何副作用.不改变a的值
b++将b值自增1,成为6
所以2+6==8追问可是b++不是++在后吗,那不是应该先算后+吗?为什么这里又变成6追答逗号运算符是顺序点,所以尽管子表达式b++的值为b的原值5,但后续计算a+b的时候自增的副作用已发生,b值为6追问就是说只有逗号表达式可以把b++先自增再拿来运算,其他的表达式还是先算后自增吗追答你需要理解顺序点和副作用的含义,搜索"裘宗燕 C/C++语言中的表达式求值顺序",这个讲的很细
整体为逗号表达式,逗号表达式的值由最末项决定,即a+b
a=2,b=5这两个子表达式分别将ab赋值为2和5
a*2子表达式没有任何副作用.不改变a的值
b++将b值自增1,成为6
所以2+6==8追问可是b++不是++在后吗,那不是应该先算后+吗?为什么这里又变成6追答逗号运算符是顺序点,所以尽管子表达式b++的值为b的原值5,但后续计算a+b的时候自增的副作用已发生,b值为6追问就是说只有逗号表达式可以把b++先自增再拿来运算,其他的表达式还是先算后自增吗追答你需要理解顺序点和副作用的含义,搜索"裘宗燕 C/C++语言中的表达式求值顺序",这个讲的很细
- 2楼网友:荒野風
- 2021-11-16 15:52
中间的a*2不用管。b++逗号后b值自增1了,最后一个表达式决定整个逗号表达式的值 a+b=2+6=8追问可是b++不是++在后吗,那不是应该先算后+吗?为什么这里又变成6追答额,++在前就先增,++在后等语句结束再增。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯