C++ c++;为什么在左边有非左值?

C++ c++;为什么在左边有非左值?,c++,coding-style,C++,Coding Style,一方面, 我发现了一个特别的建议(第41页,建议编号53): 始终在左侧有非左值(0==i而不是i==0) 我不明白这有什么用?你打算坚持这种做法吗 我不是,我不知道为什么他的做法很好。我能想到的唯一优点是,它可以避免将无意的赋值与比较混淆(if(foo=0){}与if(foo==0){}) 你有什么其他想法吗?我为什么要用它?是的,你猜对了。这是好的,老的 正如你所说,有些人之所以使用它,是为了偶尔避免在他们的意思是=时键入= 因为它只捕捉到一些情况,在这些情况下,您将左值与常量或右值进行比较

一方面, 我发现了一个特别的建议(第41页,建议编号53):

始终在左侧有非左值(
0==i
而不是
i==0

我不明白这有什么用?你打算坚持这种做法吗

我不是,我不知道为什么他的做法很好。我能想到的唯一优点是,它可以避免将无意的赋值与比较混淆(
if(foo=0){}
if(foo==0){}


你有什么其他想法吗?我为什么要用它?

是的,你猜对了。这是好的,老的


正如你所说,有些人之所以使用它,是为了偶尔避免在他们的意思是
=
时键入
=

因为它只捕捉到一些情况,在这些情况下,您将左值与常量或右值进行比较,我所知道的每个编译器都会警告您,如果您犯了错误,那么这样做没有什么意义


至少对以英语为母语的人来说,它使代码读起来像是倒着写的;有人称之为“尤达状态”。与《企业风格指南》中的许多规则一样,它可以追溯到一个时代,当时处理无情的编译器比编写可读代码更重要。

我不使用这种方法。我已经很多年没有犯=/==错误了。对我来说,经验和技能比像尤达这样笨拙的表达方式更适合我。您使用或不使用的决定应该基于您是否喜欢它,您是否觉得它对您有帮助,以及您的项目的编码标准是否禁止或需要它。
(0==i)
的优点是它可以捕获一些
=
=
错误。缺点是读它会让我的眼睛流血。令人惊叹的。链接曾经喜欢“埃及括号!”哈哈我在谷歌上搜索这个,我喜欢这个行话。太糟糕了,原来的stackoverflow池被删除了。不管怎样,尤达状态多久使用一次?大多数程序员还是少数程序员使用它?@Tomy:这纯粹是一个选择问题,你不会得到这个问题的明确答案。就我个人而言,我只在公司的编码指南中使用它,或者在我工作的项目中使用它。