与顺序执行不同到是,c++提供了多种控制结构支持更为复杂到执行路径。
条件是一个可求值到表达式,所以可以测试其结果,如果结果值非0,那么条件为真,反之..
块: 块是被花括号括起来到语句序列,c++中,块可以用于任何可以用一条语句的地方
for (int val = 1; val <= 10; ++val);
std::cout << val;
test.cpp: In function ‘int main()’:
test.cpp:6: error: name lookup of ‘val’ changed for ISO ‘for’ scoping
test.cpp:6: note: (if you use ‘-fpermissive’ G++ will accept your code)<span style="font-family:arial;font-size:12px;line-height: 26px;">
</span>
for循环中在 “初始化”部分 定义的变量的作用域范围的一个问题。ISO/ANSIC++ 把在此定义的变量的作用域范围限定在 for 循环体内,或者说,出了循环体之外这个变量就无效了。可以使用‘-fpermissive’使编译通过。
int i, sum = 0;
for (i = -100; i <= 100; ++i)
sum += i;
std::cout << sum;
sum = 0;
在Windows系统下control-z来输入文件结束符,在Unix系统中,通常是control-d
for循环和while循环到优缺点:
在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。两种形式各有优点,但它们在功能上是等价的,可以相互转换。
c++primer 习题1.18 19 20
#include <iostream>
int main()
{
int a, b;
int count = 0;
std::cout <<"please iput two number" << std::endl;
std::cin >> a >> b;
if (a>b)
{
for (int i = a; i >= b; i--)
{
std::cout << i <<" ";
count++;
if (count%10 == 0)
{
std::cout << std::endl;
}
}
}
else
{
for (int i = a; i <= b; i++)
{
std::cout << i << " ";
count++;
if (count%10 == 0)
{
std::cout << std::endl;
}
}
}
return 0;
}
int main()
{
int a, b;
int count = 0;
int tempa, tempb;
std::cout <<"please iput two number" << std::endl;
std::cin >> a >> b;
tempa = a;
tempb = b;
if (a > b)
{
while (a > tempb)
{
b += a;
a --;
}
std::cout <<"number" << b;
}
else
{
while (tempa < b)
{
a += b;
b --;
}
std::cout <<"number" << a;
}
return 0;
}