2011-07-24 43 views
3

我正在学习C++,我遇到了2种不同类型的代码,我想知道它们有什么不同。if()的区别?

是否有任何区别:

if(z==true) 
    { 
    cout << "Yes"; 
    } 
    else 
    { 
    cout << "NO"; 
    } 

和:

if(z==true) 
    cout << "YES"; 
else 
    cout << "NO"; 
+2

如果您有兴趣,还有一段代码与您呈现的代码没有区别。它是'if(z)cout <<“YES”; else cout <<“NO”;你不应该把bools与true或false比较,他们已经是bool了。 – unkulunkulu

+3

另外,你可以(也应该)省略'== true'部分。查看关于[为了真正做出重大贡献?](http://programmers.stackexchange.com/questions/12807/make-a-big-deal-out-of-true)上的答案,了解各种原因这不好。 – delnan

+0

你从哪些书或教师那里学习C++没有向你解释这个? –

回答

6

没有,有这两个之间没有什么区别。 {}仅在有多条语句时才需要,但有些人认为,如果稍后添加更多语句,始终拥有它们可以降低奇怪错误的风险。

+0

所以它只是你可以写它,但是你想以这两种方式之一..再多一些:)? 并感谢你:) – ibanezz

+0

你可以使用你想要的那些。在编程中,通常有几种方法可以做同样的事情。有时候,尽管它有效,但在某些方面做是不好的做法,因为在代码更新后,它有混淆或微妙错误的风险。 –

2

此代码的行为方式相同。所以这只是一个风格问题。

许多程序员更喜欢第一个,因为它更健壮。以不符合预期的方式更改第二个很容易。如果有多个语句(或没有语句),则{}是必需的。因此,如果认为某个部分是有条件/无条件的,那么对第二个部分的更改很容易导致代码。特别是在压痕时马虎。

我个人认为如果你有一个好的IDE可以自动格式化代码,风险很小。

2

完全没有区别,第一个例子有一个代码块而不是单个语句,它只是一个包含单个语句的块。前者通常被认为是更安全的写作。

8

技术上不行,但一个是IMO更好的做法。如果您省略大括号,则只执行下一行,而不是执行大括号内的所有内容。您可以看到代码的快速更改如何引发问题。

说你有

if(z==true) 
    cout << "YES"; 
else 
    x = 47; 

,你将它修改为

else 
    x = 47; 
    y = 99; 

Y = 99;无条件执行。最好避免这些问题,并使用大括号。

+2

当大括号中的语句不是宏时,也看到了问题:如果在稍后的某个点上它变成了多行宏,那么if语句突然表现不同(并且你失去了一天的生活调试!)。总之:总是使用大括号。 –

相关问题