我不代替,爲什麼我不需要括號在這種情況下爲什麼我不需要括號for循環和if語句
for (int i = 0; i < 10; i++)
if (num[i] < min)
min = num[i];
爲什麼我需要括號在這種情況下
int num[10], min;
for (int i = 0; i < 10; i++) {
cout << "enter 10 numbers" << endl;
cin >> num[i];
}
我不代替,爲什麼我不需要括號在這種情況下爲什麼我不需要括號for循環和if語句
for (int i = 0; i < 10; i++)
if (num[i] < min)
min = num[i];
爲什麼我需要括號在這種情況下
int num[10], min;
for (int i = 0; i < 10; i++) {
cout << "enter 10 numbers" << endl;
cin >> num[i];
}
單個語句if和for循環不需要大括號。這裏是討論爲什麼大括號是一個很好的做法,即使是單個語句。
What's the purpose of using braces (i.e. {}) for a single-line if or loop?
因爲你不知道。
它們是可選的。那就是這樣。
如果您不使用大括號將多個語句分組到一個語句,那麼只有for
或if
前導碼之後的第一個語句被視爲該構造的一部分。 (但是這個規則是傳遞的,所以你的任務是你if
是你for
的一部分一部分!)
需要注意的是壓痕沒有效果這是非常重要的。
很多人認爲[引用需求]你應該總是使用大括號,爲清晰起見。
其他人認爲混淆可能很有趣;-) http://www.ioccc.org/ –
for
和if
都必須跟一個「語句」。 A「聲明」可以是一個簡單的語句,像min = num[i];
,更復雜的一個像if (num[i] < min) min = num[i];
,也可以是一個複合語句(即零或大括號括起來更簡單語句),像{ std::cout << "enter 10 numbers\n"; std::cin >> num[i]; }
有人認爲,使用語法冗餘大括號混淆簡單的語句是很好的風格。其他人沒有。
一個for循環的語法是
for (init, condition, post) statement;
現在這意味着for(...)
之後的任何一個語句將是身體和會是什麼跑了循環。
然後我們有if語句其中有
if(condition) statement;
語法所以我們可以看到,如果整個
if (num[i] < min)
min = num[i];
只是一個單一的聲明,是所有你需要的對循環。
我們使用的原因{}當我們在一個循環或條件多於一行是讓我們使用多語句循環/作爲整個街區的條件被視爲一個單獨的語句。
如反應所示,不建議不帶大括號。
for (int i = 0; i < 10; i++) /*For-loop only has one executable
*statement in its scope, the if-statement,
*so doesn't need braces.*/
if (num[i] < min) /*If-statement contains only one executable
*statement its scope, so doesn't need braces*/
min = num[i]; //One line of code to execute.
棒與支架,它會讓你的生活更輕鬆。
謝謝,糾正。 – NonCreature0714
在FOR循環的情況下:您不必使用大括號,但根據我的知識,您應該。首先它增加了代碼的可讀性,它可以節省你對代碼的無用調試。對於將來的讀者,Oracle的代碼約定清楚地表明你應該總是使用大括號。
在IF語句的情況下:對於單個語句,您不必使用大括號,但是如果您想在IF塊中分組多個語句,則必須使用大括號。
我希望我的意見對你有用。
亮度軌道上的比賽總結得很完美 - 這只是一個很好的練習。很多程序員可能不會以那種懶惰的方式使用括號(畢竟它是可選的)。
如果您想要易於閱讀的代碼,甚至更重要的是易於調試,那麼您應該養成在EVERY for循環和if語句之後使用括號的習慣。
一段時間後它可能會變得乏味,但就像我說的 - 這只是一個很好的做法。
好吧。沒有支架的循環會很容易搞砸,特別是當程序員感到厭倦時。
但編譯器可以理解它。
示例1:以;
結尾且緊跟在for語句後面的完整行屬於for語句的範圍。但後面的路線不會。試着編譯並運行它。
#include <iostream>
int main(void){
for (int i = 0; i < 10; i++)
std::cout << "in scope of for" << std::endl;
std::cout << "out of scope of for" << std::endl;
}
例2:同爲if
聲明
#include <iostream>
int main(void){
if (1 == 1)
std::cout << "in scope of if" << std::endl;
std::cout << "out of scope of if" << std::endl;
}
例3:
#include <iostream>
int main(void){
int num[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int min = num[0];
for (int i = 0; i < 10; i++)
if (num[i] < min) //this if belong to the for above
min = num[i]; //this line belong to `if` above
//so this line also belong to the `for`
//as the `for` own the `if`
}
'iosteram'?說說累了!這是C++;在空參數列表中不需要'void'。 –
已修復。謝謝。 。 – rxu
我們基本上是用支架保持代碼乾淨,就像我知道的編碼,編譯器不是很聰明,所以如果你在循環或if條件中有多個語句,那麼我們使用括號(花括號{})來讓編譯器知道大括號中的每個語句是循環的一部分或if語句的一部分。
編譯器非常聰明,但它無法讀懂你的想法。 –
更好的讓你保持它們。沒有的語法只是容易出錯。 –
語法允許。 – Jarod42