一、运算符
(1)运算对象的数目(运算时需要几个运算对象)
单目运算符、双目运算符、三目运算符。
(2)运算符的优先级
同一个式子中不同的运算符进行计算时,其运算次序存在先后之分,称为运算符的优先级。
(3)运算符的结合性
在一个式子中如果有两个以上同一优先级的运算符,其运算次序是按运算符的结合性来处理的。
注:C++中运算符的结合性分为左结合和右结合。
补充:常见的运算符
1.算术运算符
-6 //结果为-6
5+7 //结果为12
35 % 7 //结果为0
5 % 2 //结果为1
8.5 % 3 //错误 求余运算符两个 *** 作数必须是整数!!!
2.自增自减运算符
int n,m=4;
/*1*/ n = ++m; //m先增1,m=5,然后表达式使用m的值,赋值给n,n=5.
/*2*/ n = --m; //m先减1,m=4,然后表达式使用m的值,赋值给n,n=4.
/*3*/ n = m++; //表达式先使用m的值,赋值给n,n=4,然后m增1,m=5.
/*4*/ n = m--; //表达式先使用m的值,赋值给n,n=5,然后m减1,m=4.
注:自增自减运算符只能用于变量,而不能用于常量和表达式。
3.关系运算符
int a=5,b=6,c=6,k;
3>4; //结果为假
a=c; //k为1
若a=5,b=0,c=-5
a>b>c // 表达式为真
若a=5,b=0,c=2
a>b>c // 表达式为假
4.逻辑运算符
5.真值表
注:0为假,非零为真。
C++在逻辑表达式求解时,并不一定是所有的运算都被执行,当刚开始求解或求解过程中可以确定整个逻辑表达式的值时,其余的运算符将不再执行。
例:
int a=1,b=2,c=3,d=4,m=1,n=1,k;
k=( (m= (a>b) ) && (n=(c>d)) ;
//最后m=0,n=1,k=0
当m=a+b 计算为假时,&&运算符可以确定结果其后面语句不再执行。
6.赋值运算符
int k=95,a=6,b=101;
b-a=k; //错误
5=b-a; //错误
b*=k; //正确
注:赋值 (运算符 =)左值只能是变量,不能是表达式和常量。
7.条件运算符
例:
//变量 = 判断条件 ? 成真结果:成假结果 ;
y= x>=0? a*x : b+x;
8.逗号运算符
int i=3,j=5,k;
k=i++,i+1,j++,j+1; //k的值为3 (无括号,表达式就是i++)
k=(i++,i+1,j++,j+1); //k的值为7
//注:逗号表达式的值为整个表达式最后一个表达式的值。
(注意大表达式的括号)
注:逗号表达式的值为整个表达式最后一个表达式的值。 (注意大表达式的括号)
二、表达式
(1)定义
由运算符和运算对象组成的式子称为表达式。
注:①表达式的运算对象可以是常量、变量、函数调用和嵌套的表达式。
12 + a + max(x,y) + (x+y) //常量、变量、函数调用、嵌套的表达式
②表达式的计算是按步骤执行的,称为表达式求值顺序。
x>y && xy,若计算为假则运算结束,然后计算x
③表达式运算需要考虑参与运算的数据对象是否具有合法的数据类型定义以及是否需要进行类型转换。
k = 10 + 'a' + i*5.0 - d / 100.5 //数据类型不同,需要进行类型转换
④每个表达式的结果除了确定的值之外,还有确定的数据类型。
三、类型转换
不同类型的数据混合运算时需要进行类型转换(conversion),即将不同类型的数据转化为相同类型的数据后再进行计算。
(1)类型转化的分类
①显式类型转换
显示类型转换运算符:
(int)x+y; //将x转换成整形
(int)(x+y); //将(x+y)转换成整形
(int)x%3; //x的类型和数据值不变,表达式引用转换成(int)型后的x值
②隐式类型转换(自动类型转换,由编译器自动进行的)
例题:已知:int i; float f; double d; long m; 表达式10+'a'+ i*f - m/d 的运算结果类型?
最后为double类型。
注:赋值运算符中的隐式类型转换(*******)
1.将浮点型数据赋给整型变量时,舍弃浮点数的小数部分。 (int n=6.18; n的值为6)
2.将整形数据赋给浮点型变量时,数值不变,但以浮点数形式存储到变量中。 (float n=6;n在存储时为6.000)
3.将double型数据赋给float变量时,截取前面7位有效数字存储到float变量;将float型数据赋给double变量时,数值不变,有效数字扩展到16位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)