其中数据类型可以是前面讲过的各种数据类型,它决定了变量在内存中所占的存储单元数。 例如:int x,y,z; //定义了3个整型变量x、y、z float a,b,c; //定义了3个实型变量a、b、c 3.变量与初始化
可以在声明变量的同时赋初值: 例如:int x=10,y=20+a; 例如:int x(10);
也可以先定义变量,后赋值。例如: int x1,y1; x1=10;y1=20; 注意:
⑴不能连续赋值。如:int a=b=c=5;是错误的。但可以分别赋值。 ⑵在同一个程序块中,不能有两个相同的变量名。 ⑶ 变量赋值时,等号左右两边类型要匹配。
表达式是由运算符和各种运算对象(常数、变量、常量等,也称操作数)组合而成。在C++程序中,表达式与我们在数学中学到的类似,是用于计算的式子,是计算求值的基本单位。
C++语言定义了丰富的运算符。运算符给出计算的类型,而参与运算的数据叫操作数。按运算符的运算性质又可分为算术运算符、关系运算符和逻辑运算符等。 使用运算符时,要注意以下几点:
⑴运算符的功能。如加、减、乘、除等。
⑵与操作数的关系,注意操作数的个数和类型。 ⑶运算符的优先级别。 ⑷运算符的结合性。
第四节 运算符和表达式
表2-3 C++中常用运算符的优先级、功能和结合性 优先级 运算符 ( ) :: 1 [ ] . ―> .* ―>* * & sizeof 2 ! ~ ++ -- + - 3 4 * / % + - 功能说明 改变优先级 作用域运算符 数组下标运算符 成员选择 成员指针选择 指针运算符 取地址 求内存字节数 逻辑求反 按位求反 增1、减1运算符 取正、取负运算符 乘法、除法、取余 加法、减法 2 2 左结合 左结合 1 右结合 左结合 要求操作数的个数 结合性 5 6 << >> < > <= >= 左移位、右移位 小于、大于、 小于等于、大于等于 2 2 左结合 左结合
表2-3 C++中常用运算符的优先级、功能和结合性(续表) 优先级 7 8 9 10 11 12 13 运算符 == != & ^ | && || ?: 功能说明 等于、不等于 按位与 按位异或 按位或 逻辑与 逻辑或 条件运算符 要求操作数的个数 结合性 2 2 2 2 2 2 3 左结合 左结合 左结合 左结合 左结合 左结合 右结合 14 = += -= *= /= %= 赋值运算符 <<= >>= &= ^= |= , 逗号运算符 2 右结合 15 左结合
1.基本算术运算符与算术表达式
基本算术运算符有:+(取正或加)、-(取负或减)、*(乘)、/(除)、%(取余)。其中+(取正)、-(取负)是单目运算符,其余是双目运算符。上述运算符与其在数学中的意义、优先级、结合性基本相同,即先进行乘法、除法和求余运算,优先级相同,后执行加法和减法运算,优先级相同。
注意:要求取余运算符(%)的两个操作数必须是整数或字符型数据。 算术表达式是由算术运算符与操作数组成的,其表达式的值是一个数值,表达式的类型由运算符和操作数共同确定。
【例2.1】基本算术表达式的计算。 #include
cout<<\ //输出y= -3.5 }
运行程序后,输出结果为: x=3 x=27 x=2 y= -3.5
2.增1、减1运算符及表达式
增1、减1运算符都是单目运算符,这两个运算符都有前置和后置两种形式。前置形式是指运算符在操作数的前面,后置是指运算符在操作数的后面。 例如:
i++; //++后置 --j; //--前置 注意:
⑴增1、减1运算符只能用于变量,不能用于常量和表达式。
⑵增1、减1运算符的结合方向是自右向左,如表达式-i++中运算符“-”和“++”优先级相同,结合方向是自右向左,即表达式可以理解为-(i++)。
⑶增1、减1运算符在很多情况下的使用可能会出现歧异,从而产生意想不到的结果。
【例2.2】增1、减1表达式的计算。 #include
运行程序后,输出结果为: i=5 j=4 i=5 k=5 i=3 j=4 i=3 k=3 关系运算符:
关系运算符用于比较两个操作数的大小,其比较的结果是一个布尔型的值。当两个
操作数满足关系运算符指定的关系时,表达式的值为true,否则为false。 在C++语言中,关系运算符都是双目运算符,共6个:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、= =(等于)、!=(不等于)。其中前4种的优先级高于后2种。 C++语言中虽然有布尔类型,但它仍然继承了C语言的规定,true等于1,false等于0。所以,关系运算符的比较结果可以作为算术运算中的操作数。例如:表达式2 >= 3的结果为0(false)。
在使用关系运算符时还应注意以下几点:
⑴不要把关系运算符“= =”误用为赋值运算符“=”。也不要将不等于运算符“!=”写成其他语言中的不等于运算符“<>”。
⑵'a'>=60的意思是'a'的ASCII码值与60比较大小。
⑶对于数学中表示“x大于等于5,且x小于等于20”的数学关系式5≤x≤20,正确的表达式应该是:5 <= x && x <= 20
关系表达式是由关系运算符和操作数组成,表达式的值都是1(true)或0(false)。经常出现在条件语句和循环语句中,用于决定问题的执行方法。 【例2.3】关系表达式的计算。 #include 运行程序后,输出结果为: 0 0 1 1 0 1 return 逻辑运算符与逻辑表达式: 1.逻辑运算符 逻辑运算符共有3个:1个单目运算符!(逻辑求反),2个双目运算符&&(逻辑与)和||(逻辑或)。 注意: 在三个运算符中,逻辑非的优先级最高,逻辑与次之,逻辑或最低。 关系运算和逻辑运算的结果若为真,其值为1;若为假,其值为0。 a b a&&b a||b 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1 表2-3 逻辑值的逻辑运算结果 2.逻辑表达式 逻辑表达式由逻辑运算符与操作数组成,表达式的值都应是1(true)或0(false)。 【例2.4】逻辑表达式与关系表达式的计算 #include cout<<\ //输出z=0,表示false z=!(x==3); cout<<\ //输出z=0,表示false } 赋值运算符: C++中的赋值运算符分为两种:简单赋值运算符和复合赋值运算符。 1.简单赋值运算符“=” 其表达式的一般形式为:变量 = 表达式 2.复合赋值运算符 如果以‘#’表示数值型运算符,则复合赋值表达式的一般形式为: 变量 #= 表达式 该表达式等价于: 变量 = 变量 # 表达式 例如: a += 5 等价于 a = a+5 m %=7 等价于 m = m % 7 复合赋值运算符的优先级和赋值运算符相同,结合性也相同,都为右结合。 3.赋值表达式 赋值表达式由赋值运算符与操作数组成。赋值表达式的作用就是把赋值运算符右边表达式的值赋给左边的变量。赋值表达式的类型为左边变量的类型,其值为赋值后左边变量的值。在C++语言中还可以连续赋值。 【例2.5】赋值表达式的应用。 #include