繁体   English   中英

a = !5 < a; 这行代码到底做了什么?

[英]a = !5 < a; what is exactly done in this line of code?

#include <iostream>
using namespace std;

int main() {
    float a =5;
    a = !5 < a;
    cout<<a;
    return 0;
}

这给出了输出“1”,帮助我理解这一点。

!something_here将评估为0除非something_here0

由于0 < a , ( 0 < 5 ),当解析为浮点数时, a会获得true值,即1

!5 < a;

这是一个布尔表达式,结果为truefalse ,在这种情况下将true转换为整数或浮点数时,结果为1 ,转换为false则为0

为了使代码更易于理解,这大致等效:

float a =5;
bool check = !5 < a;
if(check)
  a = 1;
else
  a = 0;
cout<<a;

该表达式的计算结果为true因为!5 == 00 < atrue

表达式a = !5 < a; 等价于a = (a > 0) ,并且由于a5初始化, (a > 0)给出true ,然后将其转换为浮点值1

那么为什么a = !5 < a; 相当于a = (a > 0) 表达式!5等价于(5 == 0) ,这显然是false false ,当用于与浮点值进行比较时,将转换为0 ,并且0 < a是 - 至少对于内置数据类型 float - 等效于(a > 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM