「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。
例:请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序
int main()
{
//写一段代码告诉我们当前机器的字节序
int a = 1;
char* p = (char*)&a;
if (*p == 1)
{
printf("小端\n");
}
else {
printf("大端\n");
}
return 0;
}
int check_sys()
{
int a = 1;
char* p = (char*)&a;
return *p
}
int main()
{
//写一段代码告诉我们当前机器的字节序
//返回1,小端
//返回0,大端
int ret = check_sys();
if (ret == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
指针类型的意义:
1.指针类型决定了指针解引用操作符能访问几个字节
char*p *p访问了1个字节
int*p *p访问了4个字节
2.指针类型决定指针+1,-1,加或者减的是几个字节
char*p p+1跳过一个字符
int*p p+1跳过一个整型 — 4个字节
练习:下面代码的输出结果是多少
a=-1 b=-1 c=255 发生了整型提升:整型提升的时候,高位补充符号位,即1。无符号的整形提升,高位补0
练习2:
{
char a = -128;
//10000000000000000000000010000000
//11111111111111111111111101111111
//11111111111111111111111110000000 补码
//11111111111111111111111110000000 整型提升后的结果
printf("%u\n", a);
//%d 打印十进制有符号整数
//%u 打印十进制无符号整数
return 0;
}
补充:
1、%d 十进制有符号整数。
2、%u 十进制无符号整数。
3、%ld 输出long整数 。
4、%s 字符串。
5、%c 单个字符。
6、%p 指针的值。
7、%e 指数形式的浮点数。
8、%x, %X 无符号以十六进制表示的整数。
9、%0 无符号以八进制表示的整数。
10、%g 自动选择合适的表示法。
char:
signed char\
unsigned char
都储存1个字节,8个bit位
有符号的char的范围:-128—127
无符号的char的范围:0-255