算术运算符和表达式
一、算术运算符和算术表达式
+ - * / %
用算术运算符连接起来的式子是算术表达式
两个整数相除结果为整数 1/2=0 5/2=2
整数才可求余,余数的符号与左边数的符号相同。
3%2=1 -3%2=-1 3%-2=1 -3%-2=-1 8%4=0
二、优先级与结合性
() * / % + —
三、强制转换类型
(类型名)(表达式)
(double) a (int) (x+y) (int) 6.2%4=2
在强制类型运算后原变量不变,但得到一个所需类型的中间变量。
如:int x;
float y=5.8; x=5
x=(int)y; y=5.8
y的值没有改变,仍是单精度浮点型
四、自增、自减运算符 (难点) ++ --
i=6; i++; i=i+1 i=7 ++i; i=i+1 i=7
i=6; i--; i=i-1 i=5 --i ; i=i-1 i=5
举例:
int i, j;
i=3;
j = ++i; i=4 j=4
++在前, 先运算,后赋值
int i, j;
i=3;
j = i++; i=4 j=3
++在后, 先赋值,后运算
1)自增、自减运算符只能用于变量,不可用于常量和表达式
因为表达式在内存内没有具体空间,常量所占的空间不能重新赋值
3++ (x+y)++ (-i)++
2)结合方式自右至左,优先级最高,向右取最大
-i++ -(i++) i+++j (i++) +j
若i=3, j=2 (i++) +j 等于5 i=4, j=2
赋值运算符和赋值表达式
"="左边必须是变量名。
若“ = ” 两边变量类型不同,在赋值时要进行类型转换。
转换原则:根据左边变量的类型转换。
少字节à多字节
1)若多字节变量为unsigned ,则转换后多余字节补零。
short int a=-1;
unsigned long b;
b=a;
2)若多字节变量为有符号型,则转换后扩展少字节的最高位。
short int a=-1;
long b;
b=a;
多字节->少字节
低位照搬
复合的赋值运算符
a+=3 a=a+3
x*=y+3 x=x*(y+3)
x/=x-4 x=x/(x-4)
x+=y x=x+y
i+=j-- i=i+(j--)
赋值表达式
a=b=5 ; b=5 a=5
"="的结合性为自右至左
a=12; a+=a-=a*a;
关系运算符和关系表达式
关系运算符(比较运算)
< > <= >= = = !=
1. = = 与 =
a=5; 赋值运算 a= =5;判断是否相等
2.< > <= >= 的优先级大于= = !=
3. 算术运算符的优先级大于关系运算符的优先级
关系表达式:用关系运算符将表达式连接起来称为关系表达式。其值非真即假。在C++语言中,用非0代表真,用0表示假。关系表达式的结果只有两个,真为1,假为0。
逻辑运算符
1. 运算符 与&& 或 || 非!
注意:
1.优先级:!à&&à| |
!->算术->关系->逻辑->赋值->逗号
2.作为条件,所有非0值均为真;作为结果,只有0或1两种。
5>3 && 2 || 8<4-!0
3.不可写为 1<x<10 应为:1<x && x<10
4.当前面的表达式可以得出整个表达式的结果时,不必再求后面的表达式。
a&&b&&c 当a为0时,表达式为0,不必求b与c。
a||b||c 当a为1时,表达式为1,不必求b与c。
sizeof()运算符
sizeof()运算符是一个单目运算符,用于计算某一个操作数类型的字节数。其格式为:
sizeof(<类型>)
sizeof(int) //其值为4
sizeof(float) //其值为4
sizeof(double) //其值为8
sizeof(char) //其值为1
逗号运算符和逗号表达式
表达式1,表达式2,表达式3,…,表达式n
顺序求解,结果为最后一个表达式的值,并且优先级最低。
各类数值型数据间的混合运算
整型、实型、字符型数据间可以混合运算。
在进行运算时,不同类型的数据要先转换成同一类型的数据再进行运算。
转换规则如下: