c - 即使下面的代码中有赋值运算符而不是比较运算符,这段代码为什么会打印 "yes"

标签 c

if 条件中有一个赋值运算符,执行时它会打印“yes”作为输出。我没听懂。

#include<stdio.h>

int main()
{
    float f = 0.1;

    if (f=0.1)
    {
        printf("Yes");
    }
    else 
    {
        printf ("no");
    }
}

最佳答案

赋值运算符有一个结果,就是刚刚被赋值的变量!

所以代码实际上等同于:

f = 0.1;
if(f) // and as unequal to 0...

可以尝试赋值0.0进行比较:

if(f = 0.0)

现在它将打印no

关于c - 即使下面的代码中有赋值运算符而不是比较运算符,这段代码为什么会打印 "yes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56549258/

相关文章:

c - 在使用 malloc 和指针理解此代码时需要帮助

c - 计算阶乘 (n)%m 的递归方法中的段错误

c - 一个字节变量如何存储两个字节字符常量?

c - 如何从 C 调用 CLAPACK?

c - 使用最接近的浮点运算

CUDA C 指针给出令人困惑的值

c - openGL ES 2 - 有没有办法附加分辨率与目标纹理不同的模板缓冲区?

简单算术表达式的上下文无关语法修改

c - 给定结构中灵活数组成员的绝对地址,如何获取结构的绝对地址?

c - 警告 : incompatible implicit declaration of built-in function ‘xyz’