大小端机器的判断-引发的思考

本文通过一道关于判断大小端机器的习题,探讨了如何编写能够在不同机器上正确运行的程序。作者分享了自己的解决方案,并对比了参考答案,意识到代码简洁性的重要性。通过这个过程,作者认识到实践和优化代码习惯的必要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深入理解计算机系统中第二章节有一习题:编写过程is_little_endian,当在小端机器上编译和运行时返回1,在大端法机器上编译运行时则返回0。这个程序应该可以运行在任何机器上,无论机器的字长是多少?

其参考答案如下:

There are many ways to solve this problem. The basic idea is to create some multibyte datum with different
values for the most and least-significant bytes. We then read byte 0 and determine which byte it is.
In the following solution is to create an int with value 1. We then access its first byte and convert it to an
int. This byte will equal 0 on a big-endian machine and 1 on a little-endian machine.

 

在没有看答案之前我编写的代码如下:

虽然我的思路是对了,但乱用if语句,是我这种新手最容易犯的问题,下面几行代码,显然可以用一句语句来概括。同时自己编写程序的时候,写完之后接着就是编译运行,看结果,结果对了,还有点沾沾自喜。没有想过有没有什么方法去优化代码,虽然这代码仅仅几行,但从二者之间对比,就知道差距的所在。

简洁就是美,看样子得加强内功才行,争取以后不要再犯这样的错误。

书看多了也没有什么用,更重要的是去实践,养成好的习惯,如编译代码之间先检查代码有没有相关的拼写错误和语法错误;其次看有没有更好的方法去实现相应的功能;怎么样才能使自己的简洁又易懂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值