【发布时间】:2018-09-25 12:50:29
【问题描述】:
为什么第一个总是评估为真?我希望这两个语句的行为相同。
for (int i =0;i<4;++i) (0 < i < 3) ? cout << "True " : cout << "False ";
真真真真假
for (int i =0;i<4;++i) (0 < i && i < 3) ? cout << "True " : cout << "False ";
假真真假
【问题讨论】:
-
(0 < i < 3)-- 你很快就会发现 C++ 不是代数。 -
不要将数学符号与 c++ 语法混淆,它们有相似之处(例如,
0 < i之类的表达式是真或假),但差异大于它们。也许最突出的例子是x = 3*y;,它不是一个等式,而是一个赋值。
标签: c++ syntax evaluation comparison-operators