目录
一、if语句
if语句的格式为:
statement1
if (测试条件)
statement2
statement3
执行到if语句时,若测试条件为真,则执行statement2,否则跳过语句statement2执行语句statement3。如下图所示:
和循环的测试条件一样,if测试条件一般为关系表达式,结果为bool值。不是bool值会被强制转换为bool值,非0为true,0为false。
代码演示:
// 输入字符
char ch;
cin >> ch;
// 判断
if (ch == 'a')
{
cout << "哈哈" << endl;
}
cout << "呵呵" << endl;
若输入的字符为a,显示哈哈,否则只显示呵呵。
二、 if else语句
if else语句格式为:
statement1
if (测试条件)
statement2
else
statement3
statement4
执行到if语句时,若测试条件为真,则执行语句statement2,否则执行语句statement3。如下图所示:
代码演示:
// 输入
char ch;
cin >> ch;
// 判断
if (ch == 'a')
{
cout << "哈哈" << endl;
}
else
{
cout << "呵呵" << endl;
}
cout << "结束" << endl;
如果输入输入a显示哈哈和结束,否则显示呵呵和结束。
可以连续使用if else语句,如下:
if (测试条件1)
statement1
else if (测试条件2)
statement2
else if (测试条件3)
statement3
…
else
statementN
上面的代码实际上只是一个if else包含在另一个else中:
if (测试条件1)
{
statement1
}
else
{
if (测试条件2)
{
statement2
}
else
{
if(测试条件3)
…
}
}
连续使用if else语句实际上就是提供多个选择,第一个条件不满足时,判断第二个条件,第二个条件不满足时判断第三个条件…,然后执行相符的语句。
代码演示:
// 输入分数
int score;
cin >> score;
// 判断
if (score >= 90)
cout << "优秀" << endl;
else if (score >= 80)
cout << "不错" << endl;
else if (score >= 60)
cout << "一般" <<endl;
else
cout << "差劲" <<endl;
分数大于等于90显示优秀,80-90显示不错,60-80显示一般,60一下显示差劲。
三、逻辑表达式
逻辑表达式由逻辑运算符和表达式组成,结果为bool值。C++有三种逻辑运算符:逻辑OR运算符——||,逻辑AND运算符——&&,逻辑NOT运算符——!。
1. 逻辑OR运算符——||
使用格式:表达式 || 表达式
当左右两侧表达式中有一侧表达式的值为true,则整个表达式的值为true,只有左右两侧表达式的值都为false,整个表达式的值才为false。
代码演示:
1)5 > 10 || 5 > 3 // true
2) 5 > 10 || 5 > 20 // false
由于逻辑运算符(||)的优先级比关系运算符低,所以上述表达式实际上为:
1) (5 > 10) || (5 > 3) // ture
2) (5 > 10) || (5 > 20) // false
不知道优先级和结合顺序的时候,使用圆括号。
注意:
逻辑运算符(||)先计算左边的表达式,再计算右边的表达式。若左边的表达式为true,则整个逻辑表达式的值已经确定(true),右边的表达式就不进行计算。
代码演示:
上述测试条件 a || a++,a的值为1,左边表达式的值为true,整个测试条件的结果为true,则不计算右边表达式a++,最终显示a的值仍为1。
2. 逻辑AND运算符——&&
使用格式:表达式 && 表达式
当左右表达式中有一个表达式的值为false,则整个逻辑表达式的值为false,当左右两边的表达式的值都为true,整个表达式的值才为true。
代码演示:
1)10 > 5 && 3 > 8 // false
2)10 > 5 && 20 > 15 // true
注意:
逻辑运算符(&&)和逻辑运算符(||)一样,都是先计算左边的表达式,再计算右边的表达式。若左边表达式的值为false,则整个逻辑表达式的值为false,右边的表达式不进行计算。
3. 逻辑运算符NOT——!
使用格式:! 表达式
对表达式的bool值取反,若表达式的值为true,则整个逻辑表达式的值为false,若表达式的值为false,则整个逻辑表达式的值为true。
代码演示:
1)!(10 > 5) // false
2)!(20 < 5) // true
注意:
由于逻辑运算符(!)的优先级较高,一般把后面的表达式放在圆括号中。
四、break和continue语句
break语句和continue语句都是用来控制循环的语句。
1. break语句
使用格式:break;
跳出循环
代码演示:
// 打印0-9的数字
for (int i = 0; i < 10; ++i)
{
cout << i << " ";
// i = 5时跳出循环
if (i == 5)
break; // 跳出循环
}
cout << endl; // 分割
cour << "结束" << endl;
上面代码原本要打印数字0-9,但是打印数字0-5之后,i的值为5,满足if语句测试条件i == 5,执行break语句跳出循环,显示结束二字,程序结束。
注意:
若有多层循环,break只跳出包裹break语句最内层的循环。
2. continue语句
使用格式:continue;
跳过本次循环的剩余语句。
代码演示:
// 打印数字0-9
for (int i = 0; i < 10; ++i)
{
if (i == 5)
continue; // 跳过本次循环的剩余语句
cout << i << " ";
}
cout << endl; // 分割
cout << "结束" << endl;
上面代码原本要打印数字0-9,但是当i的值为5时,满足if语句测试条件,执行continue语句,跳过剩余语句,数字5未打印。
五、switch语句
使用格式:
switch (整型常量/整型变量 a)
{
case 整型常量1 : statement1;
break;
case 整型常量2 : statement2;
break;
…
default: statementN;
}
执行到switch语句时,编译器会寻找与a相同的case标签,然后执行冒号(:)后面的语句,往下依次执行直到执行完毕switch所有语句。而往往只需要执行一个标签对应的语句,所以需要在每个标签的最后加上break语句,跳出switch。当没有case标签与a相同时,则执行default。若既没有标签与a对应,又没有default,则switch语句不会执行任何操作。
代码演示:
1. 无break语句
// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
case 2: cout << "你选择了第2个case标签" << endl;
default:
cout << "没有这个选项" << endl;
}
2. 有break语句
// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
break;
case 2: cout << "你选择了第2个case标签" << endl;
break;
default:
cout << "没有这个选项" << endl;
}
3. 无对应标签
// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
break;
case 2: cout << "你选择了第2个case标签" << endl;
break;
default:
cout << "没有这个选项" << endl;
}
4. 既无标签对应,又无break语句
// 输入选项
int input;
cin >> input;
// 判断
switch (input)
{
case 1: cout << "你选择了第1个case标签" << endl;
break;
case 2: cout << "你选择了第2个case标签" << endl;
break;
}
六、 条件运算符——?:
使用格式:表达式1 ? 表达式2 : 表达式3
若表达式1的值为true,则整个表达式的值为表达式2的值,若表达式1的值为false,则整个表达式的值为表达式3的值。
代码演示:
// 输入两个数,输出较大的那个数
int a, b;
cout << "输入两个数: " << endl;
cin >> a >> b;
cout << "较大的数为: " << (a > b ? a : b) << endl;
若a大于b则整个表达式的值为a,显示a,否则整个表达式的值为b,显示b。
注意:
条件运算符的优先级较低,使用时需要使用圆括号。