目录
编辑
逗号表达式
下标访问[]
函数调⽤()
sizeof
结构成员访问操作符
结构体
结构体声明
直接访问 .成员名
间接访问 结构体指针->成员名
逗号表达式
exp1, exp2, exp3, …expN
运算规则:从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。
如图c的值为逗号表达式中b=a+1的结果。
下标访问[]
[ ] 下标引⽤操作符
操作数:⼀个数组名 + ⼀个索引值
int arr[10];
arr[6] = 10;
例子中[ ]的两个操作数是arr和6
函数调⽤()
函数调⽤操作符 接受⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数。
sizeof
sizeof是操作符,不是函数
如图,使用sizeof可以不加()
结构成员访问操作符
结构体
结构体为自定义类型,用来描述复杂对象,构成结构体的每个成员可以是不同的变量类型,如标量、指针、数组等。
结构体声明
struct tag
{
member - list;//成员列表,可以1个或多个成员
}variable - list;//变量列表
直接访问 .成员名
如图初始化结构体stu
使用直接结构体访问操作符.成员名可以不按照顺序初始化
打印结构体成员内容: 结构体变量.成员
间接访问 结构体指针->成员名
打印结构体成员内容: 结构体指针->成员
操作符的属性:优先级、结合性
优先级:相邻操作符,优先级高的先执行。
结合性:当优先级一样时,大部分是左结合(从左向右执行)
• 圆括号( () )
• ⾃增运算符( ++ ),⾃减运算符( -- )
• 单⽬运算符( + 和 - )
• 乘法( * ),除法( / )
• 加法( + ),减法( - )
• 关系运算符( < 、 > 等)
• 赋值运算符( = )
由于圆括号的优先级最⾼,可以使⽤它改变其他运算符的优先级。
整形提升
意义
方便cpu运行计算,因为cpu一般是计算int的字节长度。因此两个char或short类型相加都必须先转换为int或unsigned int,然后才能到cpu中计算
方法
1.有符号整数提升按照变量的数据类型的符号位来提升
2.无符号整数提升,高位补0
举例解释
char类型的取值范围-128~127
char占用1个字节,1字节=8bit位
vs中char默认为有符号的char
00000000000000000000000001111101 char c1 = 125;
01111101 c1 发生截断
char c2 = 10;
00000000000000000000000000001010
发生截断
00001010 c2
char c3 = c1 + c2;
整型提升
00000000000000000000000001111101 c1
00000000000000000000000000001010 c2
00000000000000000000000010000111 c3
发生截断
10000111 c3
整型提升
11111111111111111111111110000111 c3的补码
10000000000000000000000001111000 c3的反码
10000000000000000000000001111001 c3的原码 -121