#include <iostream> int main() { int sum = 0, val = 1; // 持續執行 while until val is greater than 10 while (val <= 10) { sum += val; // 賦值 sum + val 賦給sum ++val; // 增加 給val加1 } std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl; return 0; } 該程序編譯和執行以后打印出:
Sum of 1 to 10 inclusive is 55 像前面的例子一樣,我們先包含了iostream頭文件并定義了一個main函數。在main函數中我們定義了兩個整型變量:sum保存數字的和,val表示從1到10的值。我們給sum賦了一個初始值0,val的開始值為1。
其中的重要部分是while語句。While的形式如下
while (condition) while_body_statement; While周期性地測試condition(條件)并執行相關的語句,直到條件為假。
// 持續執行 while until val is greater than 10 while (val <= 10) { sum += val; // 賦值 sum + val 賦給sum ++val; // 增加 給val加1 } 上面的While中的條件使用小于或等于操作符(<=操作符)來比較val的當前值與10的大小。只要val小于或等于10,我們就執行while的主體。在這種情況下,while的主體是一個包含兩個語句的代碼塊:
{ sum += val; // 賦值 sum + val 賦給sum ++val; // 增加 給va l加1 } 代碼塊是用波浪括號包含的語句序列。在C++中,代碼塊可以用于任何能夠使用語句的位置。代碼塊中的第一個語句使用了復合賦值操作符(+=操作符)。這個操作符把右邊的操作數加上左邊的操作數。它的效果與下面的賦值語句相同:
sum = sum + val; // 賦值 sum + val 賦給sum 因此,第一個語句把val的值與sum的當前值相加,并把結果存放到sum中。
下一個語句
++val; // 增加 給val加1 使用了前綴增量操作符(++操作符)。增量操作符給自己的操作數加1。++val與val = val + 1是相同的。
#include <iostream> int main() { int sum = 0; // 計算1到10之間所有數字的和 for (int val = 1; val <= 10; ++val) sum += val; //等同于sum = sum + val std::cout << "Sum of 1 to 10 inclusive is " << sum << std::endl; return 0; } 我們在前面的for循環中定義了sum,并把它設置為零。變量val只在迭代內部使用,并且是作為語句自身的一部分定義的。
For語句
for (int val = 1; val <= 10; ++val) sum += val; // 等同于 sum = sum + val 有兩個部分:for頭和for主體。頭控制主體執行的次數。頭本身包含三個部分:初始化語句、條件和表達式。在這種情況下,初始語句 int val = 1;定義了一個整型的叫做val的對象并把它的初始值設置為1。初始語句只在進入for的時候執行一次。條件val <= 10比較當前值與10的大小,每次循環的時候都會測試它的值。只要val小于或等于10,就執行for主體。執行主體之后才執行表達式。在這個for中,表達式使用了前綴增長操作符,就是給val的值加上1。在執行表達式之后,for繼續測試條件。假如val的新值仍然小于或等于10,那么接著執行for循環主體,val的值繼續增長。執行過程一直持續,直到條件失敗為止。
在這個循環中,for主體執行了求和操作:
sum += val; // 等同于 sum = sum + val 上面的主體使用復合賦值操作符把當前的val值增加給sum,并把結果存回sum。
// error: missing ')' in parameter list for main int main ( { // error: used colon, not a semicolon after endl std::cout << "Read each file." << std::endl: // error: missing quotes around string literal std::cout << Update master. << std::endl; // ok: no errors on this line std::cout << "Write new master." <<std::endl; // error: missing ';' on return statement return 0 } 2.類型錯誤。C++中每個數據條目都有相關的類型。例如10是個整數。單詞"hello"是字符串文本。類型錯誤的例子有給希望接收整型參數的函數傳遞了字符串文本。
#include <iostream> int main() { int sum = 0, value; // 讀取直到文件尾,計算讀取的值 while (std::cin >> value) sum += value; // 等同于 sum = sum + value std::cout << "Sum is: " << sum << std::endl; return 0; } 假如我們提供給這個程序的輸入信息是:3 4 5 6
那么輸入結果將會是:
Sum is: 18 像通常一樣,我們先包含了必要的頭文件。Main函數中的第一行定義了兩個變量,分別是sum和value。我們將使用value來保存我們讀取的每個數字,這是在while條件內部實現的:
while (std::cin >> value) 此處發生的操作就是對條件的計算,輸入操作
std::cin >> value 被執行,它的效果是從標準的輸入中讀取下一個數字,把讀取的內容保存到value中。這個輸入操作符返回左邊的操作數。條件測試了這個結果,也就是測試了std::cin。