对数组打印的一次小的探索 15pb
本帖最后由 代号3 于 2018-5-10 09:10 编辑原题目 数组 int a={'数字 ',~~~~,' '} 使用位运算相关进行数组内元素排序
想打印一个数组先观察下二进制呈现来着 结果(原因:字符型打印)
然后就开始搞事情啊 为啥出现这个情况呢(来自大牛的启发 ——保持一个探索内存的心态)
于是先进行正常赋值
然后
此处是最最最重要的:
31 33 78 30 内存显示13x0
why?
首先是
小端口存储方式:将一个数据存入到内存的时候使用补码方式
在存储时低字节保存到低地址上 高字节保存到高字节上即逆序存储
其次是
字符型的问题
31 十六进制 转十进制为49ASCII 049为1
33 十六进制 转十进制为51ASCII 051为3
78 十六进制 转十进制为120ASCII 120为x
30 十六进制 转十进制为48ASCII048为0
至此 理解了一些(十六进制存储 十进制显示ASCII的编译标准)
再调试
注意
总结的经验就是:熟记语法很重要,第一次出现打印的结果不符合自己预期就是对语法的知识掌握不熟练
没有能够很好地理解%d打印和%c打印的本质问题
在探索过程中的发现就是在内存层的数据如何对应到打印结果 对16进制的内存和10进制的显示有了一些理解
顺便提一句 出现两种循环 是因为大牛说do while循环是相较与while循环和for循环效率更高的 但我个人还是觉得
在最劣算法和最优算法实现中时间复杂度和空间复杂度方面 while循环在某些时候是可以比do while更好吧
希望看帖大佬有没有懂得 来个回帖解惑
页:
[1]