粉丝3.6万获赞4.3万

c 语言骚操作之负一就是全 f, 全 f 就是负一。说些关于负一的事,大家好,我是于震南,这里所讲知识出于震南技术风云路十年过往这本书这一期视频,震南介绍一些单片机 c 语言的编程技巧,学术名称叫骚操作。 为了说明关于负一的问题,我们来看这样一个例子,这个义父成立吗?似乎这是一句废话,其实不然,他不一定成立。 我们要知道, c 元中的判等运算是一种强匹配,也就是说,比较的双方必须每一个位都匹配,才能被认为相等。在这个例子中, a 这个变量在内存中的表示是零 x ff, 也就是负一的鲁码。但是负一这个长量在内存中的表示在不同的硬件平台上却不尽相同。 在十六位 cpu 平台上是零 x ff ff, 他们是相等的。而在三十二位 cpu 平台上面则是零 x ff ff ff ff, 他们就有可能不相等。虽然绝大多数情况下问题不大,因为编译器理解你的意图,会自动为你匹配类型,所以稳妥的方法是, 我们看到负一的补码是全 f, 而且位数与 cpu 平台相关。所以负一在单面积上经常还有一个妙用,那就是可以用它来 来判断硬件平台的 cpu 位数,便于提高代码的可移植性。比如三十二位平台上 int 负一为零 x 八个 f, 而十六位平台上面则是零 x 四个 f。 好,这一期视频就到这里,感谢大家进入震南的单片机世界。