执行下面的程序段后,b的值为 (100 ) a = 100 b = 20 a = a + b b = a - b 为什么?
答案:2 悬赏:0 手机版
解决时间 2021-12-29 09:54
- 提问者网友:世勋超人
- 2021-12-28 12:31
执行下面的程序段后,b的值为 (100 ) a = 100 b = 20 a = a + b b = a - b 为什么?
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-12-28 12:44
a = 100
b = 20
a = a + b 'a=120,b=20
b = a - b ‘b=120-20=100
赋值语句右边的b是前面的,左边的是赋值后的。
b = 20
a = a + b 'a=120,b=20
b = a - b ‘b=120-20=100
赋值语句右边的b是前面的,左边的是赋值后的。
全部回答
- 1楼网友:渊鱼
- 2021-12-28 13:18
要验证这类问题很简单,编个程序就行了: #include void main() { int a, b, c; a = b = c = 1; ++b && ++c || ++a; printf("%d %d %d\n", a, b, c); } --- 结果: 1 2 2 --- 为什么 a 没有改变呢?这是因为 c 语言在运行逻辑表达式的时候,采用了“短路规则”或“优化策略”。 && 和 || 是逻辑运算符,c 语言的规则是算到该运算符左边的时候假如结果已经确定了,就不会继续运算右边的表达式,以节省运算时间。 ++b 的结果不是 0,为逻辑“真”,所以还不知道逻辑与(&&)的结果,要看 ++c 的结果。 ++c 的结果也不是 0,为逻辑“真”,所以 ++b && ++c 的结果为 1(真)。 既然逻辑或(||)的左边是“真”,整个表达式的结果必定是真,所以 ++a 根本没有运行。 因此,a 没有改变,b 和 c 都增加了 1。 --- a值为[1],b值为[2] ,c值为[2]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯