吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3535|回复: 28
收起左侧

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

[复制链接]
niucaidi 发表于 2021-7-10 14:43
本帖最后由 niucaidi 于 2021-7-10 14:46 编辑

数据类型和数据存储

  • C语言中的数据类型

e1a735ec830c198afed194f8db4a74fdcf6b3e299543286d9a4f25006732f929.png

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

  • 整数类型:char short int long
类型名 位数 字节数
char 8bit 1字节
short 16bit 2字节
int 32bit 4字节
long 32bit 4字节

整数类型分为有符号(signed)和无符号(unsigned)两种:

  • 练习1:观察打印有符号数和无符号数有什么区别

    char cTest = 0xFF;                        
    unsigned char cuTest = 0xFF;                        
    printf("%d\n%d",cTest,cuTest);        
  • 练习2:观察局部变量为有符号数和无符号数的运算结果

    unsigned char i = 0xFF;                
    unsigned char j = 0x1;                
        if(i>j)                
    {                
           printf("i>j");        
    }                
    else                
    {                
           printf("i<j");        
    }                
  • 练习3:在反汇编中观察,体验数据宽度的概念                        

    char cTemp = 0xFF;                        
    short sTemp = 0xFF;                        
    int nTemp = 0xFF;                        
    char cTemp = 0x12345678;                        
    short sTemp = 0x12345678;                        
    int nTemp = 0x12345678;                        

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


  • 浮点类型:float  double

5d68c82e1bd806edc904629e7b41169d8df33d65cee84e5514cde9d14333ff1d.png

  • 将一个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进制

免费评分

参与人数 5吾爱币 +5 热心值 +4 收起 理由
weijianyang258 + 1 谢谢@Thanks!
kpking + 1 + 1 建议楼主弄个传送门。这样方便找其他集看
yan182 + 1 + 1 我很赞同!
小菜鸟一枚 + 1 + 1 楼主加油!
JJguai + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

嘟柿 发表于 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
太棒了,刚刚好需要,感谢楼主
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-2 19:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表