|
3驿站币
终于学到逻辑运算符了,这节内容本来好像挺好理解的,关键是最后这几句给我整懵了。仿佛要传递的信息量有点多,但又分不清是不是真的要传递很多的信息量。
举几个例子:
若 int x = 5; 则 !x 的值就是0,因为 x 的值是5,非0,所以是真,!x 就是假了,也就是0了;
若 int x = 5, y = 4; 那么 x && y 的结果就是真,int z = x && y; 你会发现 z 的值是1;
若 int x = 5, y = 4; 那么 !x || y 的结果是多少呢?到底是先算逻辑非,还是先算逻辑或呢?这就涉及到他们的运算符优先级了。大家可以找下《实用C++》第8课的课程说明文档,我当时给大家打包了一个运算符优先级的图标,大家可以查一下C++中的三个逻辑运算符的优先级是怎么样的顺序呢?https://www.cctry.com/thread-278817-1-1.html
就是这段话,首先第一个,若 int x = 5; 则 !x 的值就是0,因为 x 的值是5,非0,所以是真,!x 就是假了,也就是0了;
按我的理解,这句话仿佛要传递一个信息,首选int x=5,则 ix=0 这就懵了,因为如果x=5,那非x也不一定是0啊,不能是6吗?
然后我试图找个合理的解释,这话要传递的信息不是,x=5则ix=0 意思是 x=5为真,所以ix为假,这样应该好像没毛病,但这里为什么要提0呢,感觉误导性挺大,让我总往0上去想。如果不提0。我估计就认为。在if判断中,前一句为真,所以非真=假,所以不执行if的下面第一行的代码。
然后我试图又找个作者提0的解释,就是int x 只要不是0.就是真,是0就是假,那么信息量就大了,是不是int的真假是受0控制的呢?
这个不知道怎么验证。所以放一下,先验证下面一个问题。若 int x = 5, y = 4; 那么 x && y 的结果就是真,int z = x && y; 你会发现 z 的值是1;
然后继续蒙。
如果这里要表达的是,int x=正整数,为真,int y=正整数,为真,所以 真&&真=真。 所以int z=真。这样我感觉能理解,但关键这个1又是咋来的,就算正整数为真,那他不能等于2吗?搞不明白。
为什么作者大佬要提到0和1,是真的有0和1,这两个值。还是这两个值代表的(0和正整数)之类的。。。。
然后自己想验证一下,捣鼓一下,发现也不行,如图,提示红色波浪线:应输入声明。。。。这是啥意思。。。新手新手,理解一下。还没摸清楚vs这软件.....
可能这种验证一定要放到if后面的括号里吧,因为if的括号里才需要判断最终句子是真还是假。
那么问题又来了,既然只判断最终的真和假,那么为什么要提0和1呢?
是真的有这两个值,还是这两个值代表0和正整数。正整数代表真,不是正整数代表假呢,,,,,额,越说越难表达。。。
满头大汗,指手画脚。。。。不知道大家理解我的问题了没有。。
ps最后一个问题挺好理解,!的有限级为2,||的优先级是12.所以假或真,为真。
布尔值bool
真或假 true或false
0就是假 非0就是真
逻辑中只有true和false 任何逻辑比较返回的都是布尔值 即0或1
用多了就不会再纠结了
用多了就知道了
|
最佳答案
查看完整内容
布尔值bool
真或假 true或false
0就是假 非0就是真
逻辑中只有true和false 任何逻辑比较返回的都是布尔值 即0或1
用多了就不会再纠结了
用多了就知道了
上一篇: 看不懂帮助文档下一篇: 问2个问题
|