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

a4c26d1e5885305701be709a3d33442f.png

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

a4c26d1e5885305701be709a3d33442f.png

我们把这段代码敲进计算机,然后分别使用Turbo

C(一下简称TC)、VC6.0和GCC对这段代码进行编译执行,然后观察输出结果,请看图000-01、000-02、000-03:

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

我们会发现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^32-1),

2^31],怎么样够厉害的吧。

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

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

1.

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

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

3.

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值