微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么输出为0= false?

如何解决为什么输出为0= false?

我正在用C ++行使运算符,但我不理解下面的代码输出

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 举报,一经查实,本站将立刻删除。