gpt4 book ai didi

c++ - 在 C++ 中 if(a=b) 是什么意思?对比 if(a==b)

转载 作者:行者123 更新时间:2023-12-01 14:03:38 26 4
gpt4 key购买 nike

可能已经回答了,但找不到。

在 C++ 中做什么

if(a=b)

意思?
相对
if(a==b)

我只花了两个小时调试才发现
if(a=b)

编译为
a=b

为什么编译器不标记
if(a=b)

作为错误?

最佳答案

In c++ what does if(a=b) mean?


a=b是赋值表达式。如 a的类型是原始的,或者如果赋值运算符是编译器生成的,那么这种赋值的效果就是 a的值修改为匹配 b .赋值的结果将是 lvalue 引用 a .

如果操作符是用户定义的,那么它在技术上可以有任何行为,但通常通过对左操作数进行类似的修改和返回来符合预期。

返回值转换为 bool这会影响是否执行以下语句。

versus

if(a==b)

a==b是一个相等比较表达式。什么都没有分配。如果类型是原始类型,或者如果比较运算符是由编译器生成的,那么当操作数相等时结果将为真,否则为假。

如果操作符是用户定义的,那么它在技术上可以有任何行为,但通常通过进行类似的相等比较来符合预期。

Why does compiler not flag

if(a=b)

as an error?



因为它是一个格式良好的表达式(片段),只要 a可分配给 b .
if(a=b)是一种常规模式,用于表达设置变量值的操作,并具有依赖于新值的条件行为。

一些编译器会选择用警告来“标记”它。

关于c++ - 在 C++ 中 if(a=b) 是什么意思?对比 if(a==b),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60949922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com