百科问答小站 logo
百科问答小站 font logo



为什么C语言整型常量十进制形式的类型与八进制、十六进制的不一样? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

这个问题很有意思啊,提问者的问题是:

对于十进制的为什么不经过unsigned int,直接从int跳到long;按理说它应该像八进制与十六进制一样,从小到大逐一选取。


其实这个是不对的,因为不经过unsigned int才是正常的,反之八进制和十六进制表达式没有跳过这个才是不正常的。

这是因为我们用16进制或者8进制的时候,更多是为了位运算,例如int是16位的,那么0xFFFF就用int装不下,这样就会变成32位的long,变成0x0000FFFF,很显然这是一种浪费,因为位运算根本用不着这么多位,譬如说我们要把x的高八位和y的低八位组合在一起,一般是这样写:

(x&0xFF00)|(y&0xFF)

因为int是16位的,就装不下0xFF00的正数,就必须升位成long,结果就会变成:

(x&0x0000FF00)|(y&0xFF)

最后得到的结果就莫名其妙变成了long型的。




  

相关话题

  为什么编程语言都是上下文无关文法,不能采用上下文有关文法吗? 
  为什么有人会排斥用苹果电脑? 
  如何评价王垠《计算机科学入门班报名》收费12000? 
  熊猫烧香病毒的技术性有多高? 
  如何看待「机器学习不需要数学,很多算法封装好了,调个包就行」这种说法? 
  你们说的ABI,Application Binary Interface到底是什么东西? 
  如何看待全球超级计算机 TOP 500 榜单日本登顶,中国跌出前三?近年中国超算发展现状如何? 
  为什么不用汉语来开发一个高级计算机语言直接对应01?汉语的横竖撇捺解构比英语要有效的多啊? 
  如何看待中科院计算所发布的“木兰”国产编程语言其实基于Python3,并非完成“自主研发”? 
  在知乎,Java 相对于 C# 来说是不是被过分贬低了? 

前一个讨论
微软 IE 比起其他浏览器,是否做得不够好用?为什么?
下一个讨论
如何优雅地配一台台式机?





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利