返回信息流先给出有bug的代码块
```cpp
vector<int> nums={0, 0};
map<int, bool> nums_map;
bool zero_judge = false;
for (int l_1=0 ; l_1<nums.size() ; l_1++) {
if (!nums[l_1] && nums_map[0]) zero_juge = true;
if (!nums_map.count(nums[l_1])) nums_map[nums[l_1]] = false;
else nums_map[nums[l_1]] = true;
}
```
我认为这个zero_judge最后还是false,因为并没有大于2个0输入,可结果却是zero_judge为true,然后我调试发现第一次循环(l_1=0)时后面的那个if/else语句都执行了......
else语句不是否定就近的if吗...尝试加了个花括号将那两句变成代码块,无果,还是都执行了
这是一条镜像帖。来源:北邮人论坛 / cpp / #101338同步于 2021/10/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[已解决]if, else同时执行是什么鬼
Xudongyu
2021/10/28镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 specops 的大作中提到: 】
: 你看错了,只执行了第二个if的else分支,没毛病
我靠,的确是这样,可为啥第二个if它不执行,初始时nums_map里并没有key=0的值啊
第一次执行nums_map[0]的时候就插入了一个key=0,value=false的节点
【 在 Xudongyu 的大作中提到: 】
:
: 我靠,的确是这样,可为啥第二个if它不执行,初始时nums_map里并没有key=0的值啊