在条件句中使用'5 == myValue'的原因

时间:2013-11-26 17:04:19

标签: c++

我遇到了一些代码,这些代码翻转了如何检查条件,并想知道为什么除了一个奇怪的个人怪癖之外还要做这件事。我从未见过任何教科书使用它,也没有看到任何样本代码以这种方式完成。

// why do it this way?
if (5 == myValue) 
{
    // do something
}

// instead of:
if (myValue == 5) 
{
    // do something
}

我只是为==操作数看过这种方式,但对于任何其他操作数都没有。

2 个答案:

答案 0 :(得分:14)

有些人喜欢这样做,因为如果你陷入困境并键入单等号而不是双等号,“if(val = 5)”只是编译器警告,而“if(5 = val)”是错误(您无法分配常量)。

我认为这有点丑陋,个人而且你应该像你的错误一样检查你的警告,但这就是这个约定的原因(幸好这不是普遍的,但至少是适度的普遍存在。事实上,它可能并不被普遍视为旧版编译器的警告,而且这种约定已经存在了很长时间。)

有趣的事实:我刚刚阅读Code Complete(第二版),Steve McConnell同意我的观点,说他的个人偏好是“使用数字排序,并让编译器警告我有关非预期的任务”。根据定义,史蒂夫麦康奈尔知道他在说什么。

答案 1 :(得分:4)

myValue被认为不如5时,有些人会为了可读性而这样做;它将恒定的价值放在一个更显眼的地方。没有实际的理由 - 纯粹是编码员的判断。