小亦003 发表于 2021-12-28 22:10:21

一个题目,为什么y=1,不等于2

题目:
设x,y,z,t均为int型变量,则执行完下面语句后,y的值是( C )
    x=y=z=1;t=++x||++y&&++z;
(A) 不确定    (B)2 (C)1    (D)0
问题:为什么y=1,不等于2

傻眼貓咪 发表于 2021-12-28 22:46:33

    x = y = z = 1;
    t = ++x || ++y && ++z;
    t = true || true && true;
    t = true
    t = 1 // 除了 0,其它数字为真,真也就是 1

人造人 发表于 2021-12-28 22:49:09

如果 || 的左边为真就不执行右边了,也就是说 ++y 没有执行

小亦003 发表于 2021-12-28 23:28:40

人造人 发表于 2021-12-28 22:49
如果 || 的左边为真就不执行右边了,也就是说 ++y 没有执行

2楼的意思t为true,++y也为true,结果是真所以y=1,这种说法对吗?{:10_269:}

人造人 发表于 2021-12-28 23:40:11

小亦003 发表于 2021-12-28 23:28
2楼的意思t为true,++y也为true,结果是真所以y=1,这种说法对吗?

我感觉不对, || 右边的内容就没有执行
y 还保持这条语句执行后的 1
x = y = z = 1;

小亦003 发表于 2021-12-28 23:45:19

人造人 发表于 2021-12-28 23:40
我感觉不对, || 右边的内容就没有执行
y 还保持这条语句执行后的 1

感谢

傻眼貓咪 发表于 2021-12-29 09:14:49

小亦003 发表于 2021-12-28 23:28
2楼的意思t为true,++y也为true,结果是真所以y=1,这种说法对吗?

true 就是 1,false 就是 0 {:10_256:},无论 ++y 或 y++ 最终必然大于 0,所以肯定不会是 false

傻眼貓咪 发表于 2021-12-29 09:21:25

小亦003 发表于 2021-12-28 23:28
2楼的意思t为true,++y也为true,结果是真所以y=1,这种说法对吗?

这里涉及布林值和布林类型 2 个知识:

1.)布林值:true 或 false(1 或 0)
2.)布林类型:
a.)true:1、2、3、4、5、'a'、'b'、{8}、等等...
b.)false:0、0.0000、{'\0'}、NULL、等...

tomok 发表于 2021-12-29 11:09:22

学习 啦

小亦003 发表于 2021-12-29 11:31:56

傻眼貓咪 发表于 2021-12-29 09:14
true 就是 1,false 就是 0 ,无论 ++y 或 y++ 最终必然大于 0,所以肯定不会是 false

哦哦,明白了

小亦003 发表于 2021-12-29 11:34:20

傻眼貓咪 发表于 2021-12-29 09:21
这里涉及布林值和布林类型 2 个知识:

1.)布林值:true 或 false(1 或 0)


这些知识我还没学,谢谢普及{:10_254:}
页: [1]
查看完整版本: 一个题目,为什么y=1,不等于2