niucaidi 发表于 2021-7-10 14:43

C语言基础第二课:数据类型和数据存储

本帖最后由 niucaidi 于 2021-7-10 14:46 编辑

### 数据类型和数据存储
- C语言中的数据类型




- 学习数据类型的三要素
1. 存储数据的宽度
2. 存储数据的格式
3. 作用范围(作用域)

------
- 整数类型:char short int long

| 类型名 | 位数| 字节数 |
| ------ | ----- | ------ |
| char   | 8bit| 1字节|
| short| 16bit | 2字节|
| int    | 32bit | 4字节|
| long   | 32bit | 4字节|

**整数类型分为有符号(signed)和无符号(unsigned)两种:**
- 练习1:观察打印有符号数和无符号数有什么区别
```c
char cTest = 0xFF;                        
unsigned char cuTest = 0xFF;                        
printf("%d\n%d",cTest,cuTest);      
```                  

- 练习2:观察局部变量为有符号数和无符号数的运算结果
```c
   unsigned char i = 0xFF;               
   unsigned char j = 0x1;               
      if(i>j)               
   {               
         printf("i>j");      
   }               
   else               
   {               
         printf("i<j");      
   }               
```

- 练习3:在反汇编中观察,体验数据宽度的概念                        
```c
char cTemp = 0xFF;                        
short sTemp = 0xFF;                        
int nTemp = 0xFF;                        
char cTemp = 0x12345678;                        
short sTemp = 0x12345678;                        
int nTemp = 0x12345678;                        
```                        

**总结:**
**1. 有符号数和无符号数在内存中的存储`完全一样`**
**2. 运算的结果会受到符号位的影响,需要在做`类型转换`和`数学运算`的时候尤为注意**

-----
- 浮点类型:floatdouble




- 将一个float型转化为内存存储格式的步骤为:
   1. 先将这个实数的绝对值化为二进制格式                              
   2. 将这个二进制格式实数的小数点左移或右移n位,直到小数点移动到第一个有效数字的右边。                                                      
   3. 从小数点右边第一位开始数出二十三位数字放入第22到第0位。
   4. 如果实数是正的,则在第31位放入“0”,否则放入“1”。      
   5. 如果n 是左移得到的,说明指数是正的,第30位放入“1”。如果n是右移得到的或n=0,则第30位放入“0”。
   6.      如果n是左移得到的,则将n减去1后化为二进制,并在左边加“0”补足七位,放入第29到第23位。如果n是右移得到的或n=0,则将n化为二进制后在左边加“0”补足七位,再各位求反,再放入第29到第23位。

- 作业:将float类型的12.5 转换成16进制

嘟柿 发表于 2021-7-10 16:10

本帖最后由 嘟柿 于 2021-7-10 16:21 编辑

十几年前就忘光光了,当时语言可没现在多,DOS、Basic、C、C+、VB、VC什么的,都还给老师了,大学里也不教那么多,最难学的就是模拟电路了。

niucaidi 发表于 2021-7-10 16:35

erui 发表于 2021-7-10 16:31
这么快出第二课教程了,学习了,多实践学习才能学进去。

第三课也出了

zx2700 发表于 2021-7-10 15:00

顶一下,虽然还不懂,感谢分享

erui 发表于 2021-7-10 16:31

这么快出第二课教程了,学习了,多实践学习才能学进去。

仙玉重压 发表于 2021-7-10 16:57

好家伙,懵懵懂懂

yang26360 发表于 2021-7-10 17:04

讲的好.不过我想学OD

ssalon 发表于 2021-7-10 18:13

学习喽,上课喽

tq12345678 发表于 2021-7-10 19:39

确实不错

你是我的人 发表于 2021-7-10 20:32

太棒了,刚刚好需要,感谢楼主
页: [1] 2 3
查看完整版本: C语言基础第二课:数据类型和数据存储