【发布时间】: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 == 2 和 2 > 2,5 是假的。但是编译器说if 语句的计算结果为真。是什么原因?
【问题讨论】:
-
因为
5是true,在++x > 2之后求值 -
2,5不是你想的那样。 -
在 C 源代码中使用点
.作为小数点。使用逗号,分隔函数的参数,或者作为逗号运算符,但要注意——逗号运算符很容易引起混淆。无论您是否知道,您都将它用作逗号运算符。 (使用逗号运算符的结果是,2 > 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]?”