数据类型介绍: int //整型 占4个字节 short //短整型 占两个字节 long //长整型 占4个字节(vs2022中的数据)c语言标准中规定: long long //更长的整型 占8个字节 sizeof(long)>=sizeof(int) char //字符数据类型 占1个字节 float //单精度浮点数 占4个字节 double //双精度浮点数 占8个字节 数据类型的意义: 1.使用这个类型开辟内存空间大小(大小决定使用范围) 2.如何去看待空间的视角(同样是4个字节,里面储存的是浮点数还是整数) 整型家族有: char char在储存的时候储存的是ASCll码值,ASCll码 unsigned char 是整数,所以归类的时候,字符属于整型家族。 signed char short unsigned short [int] short int num=0与short num=0 等价,int ​ signed short [int] 可以省略。short num=0与signed short num int 等价。int和long类似。但char 是 signed char unsigned int 还是unsigned char取决于编译器,常见的编译 signed int 器中char == signed char. long unsigned long signed long 浮点数家族有: float double 构造类型(自定义类型): 数组类型 //数组类型为啥是自定义呢? 我们会根据需要改变数组的元素 结构体类型 struct 个数,这个时候方括号中的数值也随之改变,类型也就 枚举类型 enum 发生了改变。举个列子:int arr[10]的类型为int [10] 联合类型 union 而int arr[11]的类型则为int [11]
空类型: void表示空类型 通常用于函数的返回类型、函数的参数、指针类型。
void add() 表示该函数无返回值 {} void add(void) 表示该函数不需要参数,不用给它传 {} void *p 表示无类型指针 {} 对于整型来说,数据存放内存中其实存放的是补码 为什么储存补码呢? 使用补码,可以将符号位和数值域统一的处理,同时,加法和减法也可以统一处理(CPU只有加法器),此外,补码和原码的相互转换,其运算过程是相同的,不需要额外的硬件电路 正数 原码(直接按照该数值翻译成二进制形式就得到了原码)反码补码相同 负数 反码: 原码除符号位以外,其他位次按位取反得到反码 补码:反码+1 举个例子: int a=-10 int b=20 //-10 //10000000000000000000000000001010 -原码 //11111111111111111111111111110101 -反码 //11111111 11111111 11111111 11110110 -补码 //0xff ff ff f6 //20 //00000000000000000000000000010100 -原码 //00000000000000000000000000010100 -反码 //00000000 00000000 00000000 00010100 -补码 //0x00 00 00 14 利用原反码进行计算的一个过程: char a=-1 signed char b=-1 unsigned char c=-1 printf("a=%d b=%d c=%d",a,b,c); 答案是 ;你写对了吗?让我们分析一下它的一个过程 - #include
- int main()
- {
- int a=1;
- char *p=(char*)&a;
- if(*p==1)
- printf("小端");
- else
- printf("大端");
- }
复制代码
|