c - 为什么C比较3等于3.0?

标签 c types comparison implicit-conversion

问题是我无法理解计算机如何理解 3 和 3.0 是相同的。

我认为 INT 会隐式转换为 FLOAT?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a=3;
    float b=3.0;
    if(a==b)
        printf("s");
    else
        printf("w");
    return 0;
}

我期望代码的输出是w,但实际输出是s。 为什么?请向我解释一下计算机的视角。

最佳答案

无论如何,就数字而言,相等运算符 == 并不意味着“这两件事在各方面都相同吗?”它的意思是,“这两件事具有相同的值(value)吗?”

整数 3 和 float 3.0 显然具有相同的值,因此 if(3 == 3.0) 为 true .

同样,在 ASCII 机器上,'A' 字符的值为 65,因此 if('A' == 65) 为 true,即使字母 A 和数字 65 乍一看可能看起来非常不同。

关于c - 为什么C比较3等于3.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57811091/

相关文章:

c - C 中是否有相当于 python help() 的功能?

c - 使用 SSE 从 _m128i 寄存器中提取非零值

c - 短程序在 C 中挂起

types - Coq - 从匹配语句中获取相等性

Scala Class[_$1] 其中类型 _$1

postgresql - 遍历表并返回特定列

HTML 4 与 HTML 5

c - OpenCL 全局屏障工作项同步

python - 如何将一列中的每个单元格与 pandas 中的特定值进行比较?

javascript - 在 JavaScript 中比较字符串的最佳方法?