下标引用操作符
[ ] - 下标引用操作符
操作数 +一个数组名 +一个索引值
int main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d\n", a[4]);// [ ] - 就是下标饮用能操作符
//[ ] 的操作数是2个:arr , 4
return 0;
}
函数调用操作符
()函数调用操作符 接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数
int test(int x, int y)
{
return x + y;
}
int main()
{
int tset = add(10,20);//( ) - 函数调用操作符
return 0;
}
结构成员访问操作符
. 结构体.成员名
-> 结构体指针->成员名
struct book
{
//结构体的成员(变量)
char name[20];
char id[20];
int price;
};
int main()
{
struct book b = { "C语言", "C202002110201", 45 };
struct book * pb = &b;
//结构体指针->成员名
printf("书名: %s\n", pb->name);
printf("书号: %s\n", pb->id);
printf("价格: %d\n", pb->price);
//结构体变量名.成员名
//printf("书名: %s\n", b.name);
//printf("书号: %s\n", b.id);
//printf("价格: %d\n", b.price);
return 0;
}
整型提升
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整形,这种转换成为整型提升
整型提升是按照变量的数据类型的符号位来提升的
//负数的整型提升
char c1 = -1
变量c1的二进制(补码)中只有8个比特位
11111111
因为char为有符号的char
所以整形提升的时候,高位补充符号位,即为1
提升后的结果是:
11111111111111111111111111111111
//正数的整型提升
char c2 = 1
变量c2的二进制(补码)中只有8个比特位
00000001
因为char为有符号的char
所以整形提升的时候,高位补充符号位,即为0
提升后的结果是:
00000000000000000000000000000001
int main()
{
char a = 3;
//00000000000000000000000000000011
//00000011 - a
char b = 127;
//00000000000000000000000001111111
//01111111 - b
char c = a + b;
//00000000000000000000000000000011
//00000000000000000000000001111111
//00000000000000000000000010000010
//10000010 - c
//11111111111111111111111110000010 - 补码
//11111111111111111111111110000001 - 反码
//10000000000000000000000001111110 - 原码
// -126
//发现a和b都是char类型的,都没有达到一个int的大小
//这里就会发生整型提升
return 0;
}