You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中连续==运算结果始终为0的问题求助

为什么连续使用==运算符的结果总是0?

C++中的相等运算符==是左结合的,这意味着连续的==运算会从左到右依次执行,和你预期的“三个值全部相等”的逻辑完全不同。

以你的第一段代码为例:

cout << "(2+2 == 2*2 == pow(2, 2)) == " << (2+2 == 2*2 == pow(2, 2)) << endl;

它的实际运算顺序是:

  1. 先计算2+2 == 2*2:结果是true(4等于4),而C++中bool类型与数值交互时,true会被隐式转换为1(整数或浮点类型)。
  2. 接着用第一步的结果1和pow(2,2)的返回值4.0比较:1 == 4.0的结果是false,对应输出0。

你后续尝试的类型转换版本,本质逻辑完全一致:

  • 转int的版本:(2+2 == 2*2)得到true(转成int是1),再和int(pow(2,2))的4比较,1 ==4为false,输出0。
  • 转double的版本:double(2+2) == double(2*2)得到true(转成double是1.0),再和pow(2,2)的4.0比较,1.0 ==4.0为false,输出0。

正确的写法

如果你想判断三个值是否全部相等,需要用逻辑与运算符&&连接两个独立的相等判断:

cout << "((2+2 == 2*2) && (2*2 == pow(2, 2))) == " << ((2+2 == 2*2) && (2*2 == pow(2, 2))) << endl;

这样会先判断前两个值相等,再判断后两个值相等,只有两者都为真时,整体结果才为真(输出1)。

内容的提问来源于stack exchange,提问作者SeriousN00b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 13:26:11