如何解决为什么输出为0= false?
int x = 21,z = 33,y = 43;
cout << (!(z < y&& x < z) || !(x = z - y)) << endl;
我以真实的想法写了它,并且我理解为“不是z小于y且x小于z的情况(这是错误的),或者x等于差之差的情况。 z和y(正确)”,因此我期望输出1(= true),但我感到困惑,事实并非如此。你能解释一下我在哪里犯错吗?
编辑:感谢您的回答,很有趣的是,我实际上犯了这么小的错误。
解决方法
您误解的部分:
!(x = z - y))
x = z - y
是分配。结果产生-10
。 -10
不是0
,因此否定它会产生false
。
现在,表达式的第一部分:
!(z < y&& x < z)
!(33 < 43 && 21 < 33)
!(true && true)
!(true)
false
将它们放在一起:
(false || false) == false
,
此=
是一个赋值运算符。它分配值。
==
是比较运算符。它用于比较两个值。
int value = 5,value2 = 12;
if(value == value2)
{
// do something if value and value2 are EQUAL (which they are not)
}
有关C ++中运算符的更多信息,请参见this link。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。