结构体的类型定义,要放到 你上面printStudent函数之前,不然就是这种没定义的报错
你的结构体定义在主函数的作用域,离开主函数,其他地方是未定义得,所以你要把结构图放在最上面,对于整个文件中的函数都可见,就解决问题了
#include<stdio.h>
int main()
{
/* *///
char a = -1;
signed char b = -1;
unsigned char c = -1;
printf("a=%d,c%d,c=%d", a, b, c);
return 0;
}
输出为:
a=-1,c=-1,c=255
在32位操作系统中:
-1的源码:1000000000000000000000000001
反码:11111111111111111111111111111110( 符号位不变,其他取反)
补码:11111111111111111111111111111111(反码+1)
char 类型的a,b,c只占八个字节,会发生截断,所以只放8个字节的字符
char a->11111111 (char-->signed char)
signed char b->11111111
unsigned char c->11111111
当把a,b,c要变成整型变量被打印出来时,会发生整型提升
a:(有符号类型前方补符号位)11111111111111111111111111111111(补码)
1000000000000000000000000001(-1源码)
b:(有符号类型前方补符号位)11111111111111111111111111111111(补码)
1000000000000000000000000001(-1源码)
c:(无符号类型高位补0):00000000000000000000000011111111
(正数源码反码补码一样,以源码读出255)