【问题标题】:Why does 2 compare greater than 2,5?为什么 2 比较大于 2,5?
【发布时间】:2020-01-01 19:11:24
【问题描述】:
#include <stdio.h>

int main()
{
    int x = 1;

    if (++x > 2,5)
        printf("%d", ++x);
    else
        printf("%d", x++);
}

我不明白为什么输出是3++x == 22 &gt; 2,5 是假的。但是编译器说if 语句的计算结果为真。是什么原因?

【问题讨论】:

  • 因为5true,在++x &gt; 2之后求值
  • 2,5 不是你想的那样。
  • 在 C 源代码中使用点 . 作为小数点。使用逗号, 分隔函数的参数,或者作为逗号运算符,但要注意——逗号运算符很容易引起混淆。无论您是否知道,您都将它用作逗号运算符。 (使用逗号运算符的结果是,2 &gt; 2,5 的评估就像你写的 ++x; if (5) …5 是真的,而不是你在问题中所说的假。)
  • @P__J__ — 我没有立即找到涵盖double 常量正确语法的问题。我能建议的最好的就是 C 标准本身:C11 §6.4.4.2 Floating constants。没有规定使用逗号作为小数点。 I/O 可以使用语言环境(setlocale()localeconv())来使用逗号作为小数点。
  • @P__J__ 我使用了那个副本,因为它似乎回答了 实际 问题:“什么原因 [if 语句计算为 true]?”

标签: c int compare double


【解决方案1】:

2,5 不是 double 常量的正确语法。 2.5 是。对于生活在, 是小数点的国家的人们来说,这可能是不幸的。

【讨论】:

  • 我确信@thinkblue 在这里使用 2,5 而不是 2.5 并没有犯错。他的问题是为什么按照下面的代码 if 语句评估为 true if ( 2 &gt; 2,5 ) printf("Yes 2 is greater"); else printf("No 2 is not greater");
猜你喜欢
  • 2011-03-17
  • 1970-01-01
  • 2020-12-31
  • 2011-06-09
  • 2015-10-30
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
相关资源
最近更新 更多