注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

 
 
 

日志

 
 

聊聊C语言 之 [000] int类型到底占用几个字节  

2013-01-19 10:57:21|  分类: DIY-技术-软件 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

聊聊C语言 之 [000] int类型到底占用几个字节 - @zishi - @ZiShi-大家一起DIY      

       在网络上常常看到有朋友问“int占几个字节呀?”,其实这个问题就好比在问“车有几个轮子呀?”,如果提问的人不说明车子的类型那么这个问题就没有标准答案了,因为车有可能是自行车、汽车,还有可能是火车。对于int来说也是一个道理,要想知道int占用几个字节最简单的办法就是实际测试一下,请看图000-00:

聊聊C语言 之 [000] int类型到底占用几个字节 - @zishi - @ZiShi-大家一起DIY  

我们把这段代码敲进计算机,然后分别使用Turbo C(一下简称TC)、VC6.0和GCC对这段代码进行编译执行,然后观察输出结果,请看图000-01、000-02、000-03:

聊聊C语言 之 [000] int类型到底占用几个字节 - @zishi - @ZiShi-大家一起DIY

聊聊C语言 之 [000] int类型到底占用几个字节 - @zishi - @ZiShi-大家一起DIY

聊聊C语言 之 [000] int类型到底占用几个字节 - @zishi - @ZiShi-大家一起DIY

我们会发现TC告诉我们int占用2个字节,而VC和GCC告诉我们int占用4个字节。我们在同一台机器上编译同一段代码,而不同的编译器输出了不同的执行结果,那么它们仨人到底谁说的是真话呢?

我猜它们说的都是真话,因为从来没人规定int应该占用几个字节,那么编译器只好自己说了算。

TC说:只要在我这编译那么int就占2个字节。

VC和GCC说:只要在我这编译那么int就占4个字节。

TC又说了:如果在我这使用int类型变量,那么它能表达的范围是[-(2^15-1), 2^15],出了这个范围就要当心了。

VC和GCC对着TC不屑的说:int在我们这能表示的范围可不止这么小,我们的表达范围是[-(2^31-1), 2^31],怎么样够厉害的吧。

所以我们在使用不同编译器时候需要注意他们的数据类型差异,int如此其他数据类型也应当注意,因为并没用人规定某种数据类型应该占据多少字节,以及他所表示的数据是有符号还是无符号,即便有人规定这些内容那么编译器是否愿意按规定来实现谁也说不准。以后我们还会介绍一些由于数据类型差异引发的程序异常。

好了先总结一下这次我们所掌握的信息:

1. C语言具有较好的移植性,同一份代码可以在不同的编译器上进行编译;

2. 编译没有出错的程序不表示执行也正确;

3. int到底占用几个字节谁也说不准,就像车应该有几个轮子一个道理,需要根据实际情况而定,对int来说主要还是看编译器本身怎么定义; 

  评论这张
 
阅读(1243)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017