Lesson 6:分支语句和逻辑运算符

一、if判断语句
if (test-condition1)
    statement1
else if (test-condition2)
    statement2
else
    statement3
        在这里,判断条件也会被强制转换为bool值,也就是0会被转换为false,非0会被转换为true。if-else可以成对使用,也可以只使用if语句。

        二、逻辑表达式
        1、或(or)运算符:||
        使用or和||的效果是一样的,只要有一个为true则整体为true。
        2、与(and)运算符:&&
        使用and和&&的效果是一样的,只要有一个为false则整体为false。
        3、非(not)运算符:!
        使用not和!的效果是一样的,目的是将它后面的真值取反。
        需要注意的是,!运算符的优先级高于所有的关系运算符和算术运算符。因此要对表达式求反,必须用括号将其括起。

        三、? : 条件运算符
        条件运算符经常用来替代if-else语句,它是C++中唯一一个需要3个操作数的运算符,格式为:
        expression1 ? expression2 : expression3;
        如果expression1为true,则整个条件表达式的值为expression2的值;否则,整个表达式的值为expression3的值。用法如下:
// method 1
if (a > b)
	c = a;
else 
	c = b;
// method 2
int c = (a > b) ? a : b;

        四、switch语句
switch (integer-expression) {
	case label1:
		statement1;
		break;
	case label2:
		statement2;
		break;
	case label3:
		statement3;
		break;
	// ...
	default:
		statement4;		
}
        需要注意的是,每个标签都必须是整数常量表达式。最常见的标签是int或char常量,也可以是枚举量。
        如果integer-expression捕鱼任何标签匹配,则程序将跳到标签为default的那一行。如果要让程序执行完一组特定语句后停止,必须使用break语句,这将导致程序跳出switch语句。例如:
case 'a':
case 'A':
	cout << "a/A" << endl;
	break;
        如果输入的是a,由于标签a没有break语句,那么就会接着执行标签A,所有就会输出,但是由于标签A有break语句,那么就会直接跳出switch语句,不会执行之后的标签。也就是说,如果匹配到一个标签,就会进入该标签的语句,并且会一直往后执行其他的标签,知道有break出现才会停止。在这个例子中,可以用来判断输入不区分大小写的字母。但是一般情况下还是要加上break语句,以免造成一些不必要的麻烦。
        对比if-else语句来说,if-else可以用来处理浮点数以及范围比较,而switch语句只能用来处理一个单独的整数值。当既可以用if-else语句,也可以用switch语句时,而且选项不少于3个时,应使用switch语句,它是专门为这种情况设计的,执行的效率更高。

        五、break和continue语句
        break语句是跳出距离它最近的一个循环,如果需要跳出多重循环,可以设置标记flag,从里到外一层层的跳出。
        continue语句是跳过循环体中余下的代码,并开始新一轮的循环,注意在switch语句中不能直接使用continue语句。
        另外有一种语法使用goto语句,例如:
if (flag == true)
    goto fun;
// ...
fun: {
	cout << "hahaha" << endl;
	cout << "hhh" << endl;
}
        goto标号语句必须在同一函数体中,可以起到直接跳转的作用。了解汇编的跳转指令后,应该可以理解使用goto语句不是很好,应该使用其他结构化控制语句来代替。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值