【发布时间】:2015-04-29 21:05:15
【问题描述】:
我有一段代码正在尝试调试,这会产生奇怪的结果。一个非常清楚地包含值 6 的整数将 false 与文字 6 进行比较。
在我的代码中,这段代码:
int allGreen = 0;
int index = 0;
while (ch->fb[index]->selection_color() == FL_GREEN)
{
++allGreen;
++index;
}
std::cout << allGreen << std::endl;
std::cout << std::boolalpha << (allGreen == 6) << std::endl;
产生输出:
6
false
我在 Ubuntu 上使用 g++ 4.8.2 进行编译。
这怎么可能发生?
编辑:从条件中删除所有绿色无济于事。 编辑 2: index 和 allGreen 是相等的,正如预期的那样。两者都不等于 6,尽管两者都是 6。
【问题讨论】:
-
我们可以有“一些条件”,以便我们自己运行这段代码
-
抱歉,有些条件不是很有帮助,因为它与代码库的其余部分紧密集成。
-
某些条件是“ch->fb[allGreen]->selection_color() == FL_GREEN”
-
除了“某些条件”之外的所有内容都是实际代码吗?
-
请提供MCVE。
标签: c++ int comparison-operators