c语言打印变量高低字节,亲自动手——C语言变量所占字节,及自动类型转换

亲自动手——C语言变量所占字节,及自动类型转换

亲自动手——C语言变量所占字节,及自动类型转换

一个经典的问题:一个int占多少字节      经典C中并没有对一个int占几个字节有具体的规定,《The C Programming Language》中只规定了:

“Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that shorts and ints are at least 16bits, longs are at least 32bits, and short is no longer than int, which is no longer than long.”

即:    2 B ≤ short ≤ int ≤ 4 B≤ long      故int到底占几个字节,要视不同的操作系统和不同的编译器而定,特别是编译器对其内存的分配。一般而言,对于16位(当然,机器的字长通常也就是操作系统的位数)机器而言,一个int一般占2个字节,32位和64位机器int占4个字节(当然,还要考虑操作系统之上的编译器)。       那么对于常见的平台VC++6.0和DEV-C++,到底是不是这样呢,动手试试看。

① 平台:VC++6.0, 64 bit win7

c2b977c7497bd9ddb338323dffcf081a.png

① 平台:DEV-C++5.11, 64 bit win7

606b7ff58339973c2ed19adccf183fdd.png

上述两平台结果相同:

char           : 1 B

short        :2 B

int            : 4 B

unsigned :4 B

long         :4 B(规定上只说 int ≤ 4 B≤ long,所以long和int一样长是可以的)

float         :4 B

double     :8 B

另有类型转换表:(横向为必然要进行的转换)

高            double   ←←    float↑                 ↑↑              long

↑                ↑

↑           unsigned

↑               ↑

低              int← ←  char,short

自动转换顺序表

PS:

一方面,经典C的实质标准《The C Programming Language》是后来C89,C99的重要理论参考,其规定的重要性不言而喻,也是众多C语言开发者,研究者的“圣经”;

另一方面,《The C Programming Language》在很多方面只对C的特性进行了描述,并没有给出具体实现,也没有硬性规定。并且,即使是后来ISO制定的C89,C99,具体的C编译器也不一定全都遵守/支持。所以对于《The C Programming Language》或者后来的各类标准,只能作参考,怎么实现还要看具体的编译器,机器情况,这也是动手的意义所在。

参考:http://blog.51cto.com/charlesxie/939680

声明:除已注明的引用外,文章系作者原创,引用转载请注明出处,如有必要请联系作者。

亲自动手——C语言变量所占字节,及自动类型转换相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值