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:21 编辑
十几年前就忘光光了,当时语言可没现在多,DOS、Basic、C、C+、VB、VC什么的,都还给老师了,大学里也不教那么多,最难学的就是模拟电路了。 erui 发表于 2021-7-10 16:31
这么快出第二课教程了,学习了,多实践学习才能学进去。
第三课也出了 顶一下,虽然还不懂,感谢分享 这么快出第二课教程了,学习了,多实践学习才能学进去。 好家伙,懵懵懂懂 讲的好.不过我想学OD 学习喽,上课喽 确实不错
太棒了,刚刚好需要,感谢楼主