了解计算机科学的基本概念 熟悉不同类型的编程语言了解典型C++程序的开发环境用C++编写简单的计算机程序使用简单输入与输出语句熟悉基本数据类型使用算术运算符了解算术运算符的优先级编写简单的判断语句
⑥ ① ② ④ ③ ⑤
语句下面的圆圈数字表示C++采用运算符的顺序。乘法、求模和除法首先从左向右求值(结合律为从左向右)因为它们的优先级高于加法和减法。然后进行加法和减法运算,也是从左向右求值。 并不是有多对括号的表达式都包含嵌套括号。例如下列表达式不包含嵌套括号: a * (b+c)+c*(d+e)
这些括号在同一层。
要更好地了解运算符优先级规则,考虑二次多项式的求值:
y = a * x * x + b * x + c;
⑥ ① ② ④ ③ ⑤
语句下面的圆圈数字表示C++采用运算符的顺序。C++中没有指数运算符,因此我们把x表示为x*x,稍后会介绍标准库函数pow(数)。由于pow所需要的数据类型有一些特殊情况,因此放第3章再介绍。
假设变量a、b、c、x初始化如下:a=2,b=3,c=7和x=5。图1.12演示了上述二次多项式的运算符优先级。
2
上述赋值语句可以加上多余的括号,使代码更清晰:
y=(a*x*x)+(b*x)+c;
编程技巧1.15
和代数中一样,可以在表达式中加上多余的括号,使代码更清晰,这些括号称为冗余括号。冗余括号常用于组合表达式中的子表达式,使表达式更加清晰。
1.19 判断:相等与关系运算符
本节介绍简单的C++ if结构,使程序根据某些条件的真假做出判断。如果条件符合,即为真(true),则执行if结构体的语句;如果不符合,即条件为假(false),则不执行语句,稍后将举例说明。
if结构中的条件可以用相等运算符(equality operator)和关系运算符(relational
operator)表示,如图1.13 关系运算符具有相同的优先级,结合律为从左向右。相等运算符的优先级也相同,但低于关系运算符的优先级,结合律也为从左向右。
了解计算机科学的基本概念 熟悉不同类型的编程语言了解典型C++程序的开发环境用C++编写简单的计算机程序使用简单输入与输出语句熟悉基本数据类型使用算术运算符了解算术运算符的优先级编写简单的判断语句
图 1.13 相等与关系运算符
常见编程错误1.5:
如果==、!=、>=和<=运算符的符号对之间出现空格,则会出现语法错误。
常见编程错误1.6:
逆转!=、>=和<=运算符的符号顺序(变为=!、=>、和=<)通常会出现语法错误。将!=写成=!有时不会出现语法错误,但会出现逻辑错误。
常见编程错误1.7
不要把相等运算符==与赋值运算符=混淆起来。相等运算符表示等于,而赋值运算符表示取、取值或赋值。有人把相等运算符读作双等于。稍后会介绍,把相等运算符==与赋值运算符混淆起来可能不会造成明显的语法错误,但可能造成相当明显的逻辑错误。
下例用六个if语句比较用户输入的两个数。如果其中任何一个if语句的条件成立,则执行与该if相关联的输出语句。图1.14显示了这个程序和三个示例输出。
注意图1.14的程序边疆使用流读取操作输入两个整数。首先将一个值读到num1中,然后将一个值读到num2中。if语句的缩排是为了提高程序的可读性。另外,注意图1.14中每个if语句体中有一条语句。第2章将会介绍结构体中有多条语句的if 语句(将语句体放在花括号“{ }”中)。
1 // Fig.1.14:fig01_14.cpp
2 // Using if statements,relationnal
3 // operators,and equality operators
4 #include<iosream.h>
5
6 int main()
7 {
8 int num1,num2;
9
10 cout<<"Enter two integers,and I will tell you\n"
11 <<"the relationships they satisfy: ";
12 cin>>num1>>num2; // 读取两个整数
13
14 if(num1==num2)
15 cout<<num1<<" is equal to"<<num2<<endl;
16
17 if(num1!=num2)
18 cout<<num1<<" is not equal to "num2<<endl;
19
20 if(num1<num2)
21 cout<<num1<<" is less than "<<num2<<endl;