c++从零开始---if 分支语句和逻辑表达式

1、分支语句 if 和 else if

设计产能程序的一个关键是使程序具有决策能力。当 c++ 程序必须决定是否执行某个操作时,通常使用 if 语句来实现选择。if 有两种格式: if 和 if else。

  1. if 语句组成(一层条件):
if (test-condition)
	statement

如果 test-condition 为 TRUE,则程序将执行 statement,后者既可以是一条语句,也可以是语句块。如果测试程序为 FALSE,则程序将跳过语句。

  1. if else 语句构成(两层条件):
if (test-conditon)
	statement1
else
	statement2
  1. if else if else 语句(三层或多层条件):
if (test-condition)
	statement1
else if (test-condition)
	statement2
...
else
	statementn

分支结构与循环结构套用程序:
该程序让用户猜测目标数字是多少,使用分支结构帮助用户判断是应该继续增大还是减小,使用循环结构帮助用户重复猜测:

#include <iostream>
const int num = 27;
int main()
{
	using namespace std;
	int n;

	cout << "Enter a number in the range 1-100 to find "
		<< "my favorite number: ";
	do
	{
		cin >> n;
		if (n < num)
			cout << "Too low -- guess again: ";
		else if (n > num)
			cout << "Too high --guess again: ";
		else
			cout << "Yes, " << num << " is right." << endl;
	} while (n != num);
	return 0;
}

2、逻辑表达式

逻辑表达式有逻辑 OR 运算符(||)、逻辑 AND 运算符(&&)和逻辑 NOT 运算符(!)。

2.1 逻辑 OR 运算符

如果原来表达式中的任何一个或全部为 TRUE,则得到的表达式的值为 TRUE,否则,表达式的值我 FALSE。如下:

5 == 5 || 5 == 9 // true
5 > 3 || 5 > 10 // true
5 > 8 || 5 < 10 // true
5 > 8 || 5 < 2 // false

注意:逻辑运算符的优先级低于关系运算符,因此不需要给关系运算加括号。
另外,c++ 规定,|| 运算符是一个顺序点,也就是说,计算机先修改左侧的值,再对右边的值进行判定,例如:

i++ > 6 || i == 7 

假设原来 i 的值为10,则在对 i 和 7 进行比较时,i 的值已经变成 11。另外,如果左侧的表达式为 TRUE,则 c++ 将不会去判定右侧的表达式,因为只要一个表达式为 TRUE,则整个表达式为 TRUE。
II 运算符的逻辑框如下:

-expr1 == trueexpr1 == false
expr2 == trueturetrue
expr2 == falsetruefalse

2.2 逻辑 AND 运算符

当且仅当两个表达式都为 TRUE时,得到的表达式的值才为 TRUE。

5 == 5 && 9 == 9 // true
5 > 3 && 5 > 1 // true
5 > 8 && 5 < 10 // false
5 > 8 && 5 < 2 // false

&& 运算符的逻辑框如下:

-expr1 == trueexpr1 == false
expr2 == trueturefalse
expr2 == falsefalsefalse

在 c++ 中,不支持类似于 5 < x <= 10 这样的表达式,需要使用 &&逻辑运算符。写成:

x > 5 && x <= 10

比如分支结构中的测试条件:

if (age > 17 && age < 35)
	... // body

2.3 逻辑 NOT 运算符

! 运算符将它后面的表达式的值取反。也就是说,如果 expression 为 TRUE,则 !expression 为 FALSE;如果 expression 为 FALSE,则 !expression 为 TRUE。
注意:在比较复杂的表达式中,尽量使用括号表达优先级,使得代码更容易阅读且不容易出错。
比如下面表达式:

age > 30 || weight >300 && donation >1000 // expr1
(age > 30 || weight >300) && donation >1000 // expr2

由于 && 的优先级比 || 的优先级高,如果想要表达 age > 30 或 weight > 300 和 donation > 1000 的意思,那么必须像 expr2 那样书写。

3、其它

3.1 字符函数库

c++ 继承了一个字符相关的、非常方便的函数软件包,可以确定字符是否为大写字母、数字、标点符号等工作。部分 cctype 中的字符函数如下表:

函数名称返回值
isalpha()如果参数是字母,返回 TRUE
isdigit()如果参数是数字(0~9),返回 TRUE
ispunct()如果参数是标点符号,返回 TRUE

其它更多函数参考《c++ premier plus 第 6 版》第148 页

3.2 ?: 运算符

3.2.1 使用方法

c++ 有一个常被用来代替 if else 的运算符—条件运算符(?:),它是 c++ 中唯一一个需要 3 个操作数的运算符。该运算符的通用格式:

expression1 ? expression2 : expression3

如果 expression1 为 TRUE,则整个表达式的值为 expression2 的值,否则,整个表达式的值为 expression3 的值:

5 > 3 ? 10 : 12 
3 == 9 ? 25 : 18

第一个表达式值为 10,第二个表达式的值为 18。

3.2.2 ?: 的优势

?: 运算符更加简洁,该条件运算符生成一个表达式,因此是一个值,可以将其赋给变量或将其放大一个更大的表达式中。比如:

int c = a > b ? a : b

或嵌套使用:

for (int i = 0;i < 3; i++)
	cout << ((i < 2) ? !i ? x[i] :y : x[1]);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值