C++中if(x==8)和if(8==x)有什么区别?

2024-12-29 09:54:37
推荐回答(2个)
回答1:

c++中if(x==8)或者if(8==x)这都没有什么区别的。

1、只所以出现这种写法是历史造就的,当年是为了「防止手贱把 == 写成 =」而被人发明出来的。
2、这两种写法本意是没有区别的,但如果你不小心把 == 写成 =:
if (x == 8) 括号里就会从判断变成赋值 if (x = 8),不幸表达式「x = 8」的值为 8,也就是 true
if (8 == x) 括号里就会从判断变成赋值 if (8 = x),你没法给 8 赋值,所以编译器会报错
3、不过现在都 2017 年了,很久以前,市面上主流编译器就都支持对直接在 if 括号里写赋值的情况报警告了。
4、与其依赖这种把代码搞得不通顺的奇怪写法,不如通过设置合理的编译器警告等级来避免手贱。

回答2:

如果x是普通变量,没有什么区别
如果x是自定义类型的对象,涉及到该类型重载运算符==的类型,前者可以用成员重载,后者只能用友元或者全局函数重载