a = !5 < a;在这一行代码中究竟做了什么?

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

本文关键字:一行 代码 究竟 什么 lt      更新时间:2023-10-16
#include <iostream>
using namespace std;
int main() {
    float a =5;
    a = !5 < a;
    cout<<a;
    return 0;
}

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

!something_here的计算结果将0,除非something_here 0

由于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 < a true

表达式

a = !5 < a;等价于a = (a > 0),并且由于a是用5初始化的,(a > 0)给出true,然后1转换为浮点值。

那么为什么a = !5 < a;等同于a = (a > 0)呢?表达式!5等价于(5 == 0),显然是falsefalse,当用于与浮点值的比较时,转换为0,并且0 < a - 至少对于内置数据类型浮点 - 等价于(a > 0)