鱼C论坛

 找回密码
 立即注册
查看: 2432|回复: 0

[经验总结] 对数组打印的一次小的探索 15pb

[复制链接]
发表于 2018-5-9 15:40:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 代号3 于 2018-5-10 09:10 编辑


原题目 数组 int a[10]={'数字 ',~~~~,' '} 使用位运算相关进行数组内元素排序
想打印一个数组先观察下二进制呈现来着 结果 字符型打印1.png (原因:字符型打印)
然后就开始搞事情啊 为啥出现这个情况呢(来自大牛的启发 ——保持一个探索内存的心态)
于是先进行正常赋值 正常的数字数组赋值0.png
然后 第一次打印失败8.png
此处是最最最重要的:
31 33 78 30 内存显示13x0
why?
首先是       
        小端口存储方式:将一个数据存入到内存的时候使用补码方式
在存储时低字节保存到低地址上 高字节保存到高字节上即逆序存储
其次是
        字符型的问题
        31 十六进制 转十进制为49  ASCII 049为1
        33 十六进制 转十进制为51  ASCII 051为3
        78 十六进制 转十进制为120ASCII 120为x
        30 十六进制 转十进制为48  ASCII  048为0
至此 理解了一些(十六进制存储 十进制显示  ASCII的编译标准)
再调试 成功打印9.png
注意 注意1.png

总结的经验就是:熟记语法很重要,第一次出现打印的结果不符合自己预期就是对语法的知识掌握不熟练
没有能够很好地理解%d打印和%c打印的本质问题
在探索过程中的发现就是在内存层的数据如何对应到打印结果 对16进制的内存和10进制的显示有了一些理解

顺便提一句 出现两种循环 是因为大牛说do while循环是相较与while循环和for循环效率更高的 但我个人还是觉得
在最劣算法和最优算法实现中时间复杂度和空间复杂度方面 while循环在某些时候是可以比do while更好吧
希望看帖大佬有没有懂得 来个回帖解惑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 16:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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