#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。