一、运算符的优先级与结合性
运算符优先级与结合性 |
|||
优先级 |
运算符类型 |
运算符 |
结合性 |
1 |
括号、成员运算符 |
() , [] , -> , . |
左结合 |
2 |
单目运算符 |
! , ~ , ++ , -- , +(正号) , -(负号) , *(取内容) , &(取地址) , sizeof |
右结合 |
3 |
乘除取余运算符 |
*, / , % |
左结合 |
4 |
加减运算符 |
+ , - |
左结合 |
5 |
移位运算符 |
<<(左移) , >>(右移) |
左结合 |
6 |
关系运算符 |
< , <= , > , >= |
左结合 |
7 |
等与不等运算符 |
== , != |
左结合 |
8 |
按位与运算符 |
& |
左结合 |
9 |
按位异或运算符 |
^ |
左结合 |
10 |
按位或运算符 |
| |
左结合 |
11 |
逻辑与运算符 |
&& |
左结合 |
12 |
逻辑或运算符 |
|| |
左结合 |
13 |
条件运算符 |
?: |
左结合 |
14 |
赋值运算符 |
= , += , -= , *= , /= , &= , |= , <<= , >>= |
右结合 |
15 |
逗号运算符 |
, |
左结合 |
二、自增与自减
1、a++(--)
a首先参与表达式的运算,最后自加(减)。例如int a=1,b=2,c=0;c=(a++)+b;运行结果为c==3,a==2,b==2;
2、(--)++a
a先自加(减),然后参与表达式的计算。例如上面的例子,运行结果为c==4,a==2,b==2;
三、sizeof
sizeof是个运算不,而不是函数,其功能是以字节为单位给出其操作数的存储大小。它有两种语法格式:
①sizeof(表达式) 或 sizeof 表达式
②sizeof(数据类型)
sizeof不能用于函数类型、位字段类型或不完全类型(具有未知存储大小的数据类型,如未知存储大小的数组、未知内容的结构或联合体、void类型等)
例:(vs的结果)
sizeof(1.5f)等价于sizeof(float)结果为4
sizeof(1.0)等价于sizeof(double)结果为8
sizeof 1等价于sizeof(int)结果为4
sizeof ‘a‘等价于sizeof(char)结果为1
四、基本类型转换
1、隐式转换
按照优先级(优先级高的优先完成转换)把低级类型转换为高级类型(数据类型保值精度更强),再进行运算。
2、强制转换
强制类型转换的格式:
(类型名)(表达式)或(类型名)表达式。
强制类型转换是将所需变量或表达式的值转换为所需的类型,并不改变原来变量或表达式的类型属性。
时间: 2024-10-21 09:48:05