亲自动手——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

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

上述两平台结果相同:

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语言变量所占字节,及自动类型转换相关教程

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

  1. c语言打印空心矩形图案的程序,C语言之输出空心棱形图案

    #include #include void main() { int n,j,i; /*i为行数,j为每行中的项数*/ printf("输入图案上三角的高度n:"); scanf ...

  2. c语言打印输入你名字首字母,C语言基础第一章.pptx

    第1章 C语言程序设计基础 §1.1 C语言出现的历史背景 C语言是国际上广泛流行的高级语言. C语言是在B语言的基础上发展起来的. B (BCPL)语言是1970年由美国贝尔实验室设计的, 并用于编 ...

  3. c语言打印空心矩形图案的程序,C语言空心菱形 *号打印图形

    //1.空心菱形 运行结果: 代码实现: int line = 0, m = 0; printf("请输入行数:\n"); scanf("%d", &l ...

  4. java中对象字节数_JAVA中求解对象所占字节大小

    该类为cache4j缓存框架中的工具类方法,该方法实现了两个接口 接口1:计算对象在内存中所占字节数 接口2:复制对象,实现深度克隆效果,实现原理为先序列化对象,然后在反序列化对象:返回一个新的对象, ...

  5. go语言打印日期_判定是否掌握Go语言的最重要标准:对并发的掌握

    并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很重要的原因. Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天) ...

  6. vs c语言打印心形情书,最美C语言情书(输出心形图案).doc

    最美C语言情书(输出心形图案).doc (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 /***C语言心形图案***/# incl ...

  7. c语言打印三角99乘法表,用c语言打印99乘法表4种三角形

    #include int main() { int i,j; //左下角. for (i=1;i<10;i++) { for (j=1;j<10;j++) if(i>=j) prin ...

  8. 17.3.10--关于C元的变量类型所占字节问题和类型转化

    在C语言并没有对于严格规定short,int  long所占字节,只是做了宽泛要求: short:至少连个字节 int建议为一个机器字长,32位环境下机器字长是4个字节,64位环境机器字长是8个字节 ...

  9. c语言结构体struct所占字节数求解

    原本觉的c语言学的还不错,今天看了一下c语言的有关书籍,看到求结构体大小的例子,心想这不是很简单吗,不就是把所有成员的大小加起来就行了,其实远没我想的简单,看来c语言还要继续学习哈哈. 先看一个实例 ...

  10. c语言中大写英文字母所占字节,Java中字符编码和字符串所占字节数 .

    首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~12 ...

最新文章

  1. XMT.com超200万被区块链终端交易
  2. 主题:Centos6.4安装JDK
  3. android中Camera setDisplayOrientation使用
  4. Bootstrap研究3-基础html元素
  5. 安卓mysql插入数据_Android批量插入数据到SQLite数据库的方法
  6. Carrier Configuration in Android 6.0 文档翻译
  7. 牛顿下山法c语言_数值计算(二十九)修正牛顿法I求解方程的根
  8. java addslashes_PHP防止注入攻击
  9. 将数组项复制到另一个数组中
  10. ios13 无法传参_Win版iOS13越狱最新消息汇总丨拼音字体更新
  11. 免费分享全套java学习资料
  12. latex表格生成神器--教你如何将excel变成latex格式--教你如何做三线图
  13. 金融网络安全和反欺诈方法论,金融新兴技术成熟度几何?
  14. Sql Server 生成 Word 文档 表结构
  15. 实现谷歌浏览器打开海康视频等OCX控件
  16. unity摄像机追踪屏幕抖动的问题
  17. 纪中 Day13Day14
  18. word中插入“分节符-下一页”后,打印预览会多出空白页的解决方法
  19. 每日一句:day02——From Zero To Hero
  20. 尚硅谷在线教育七:尚硅谷在线教育项目课程管理相关的开发

热门文章

  1. C#获取屏幕的分辨率
  2. MySQL数据库高级SQL语句【进阶查询、null值、数据库正则、数据库运算符、连接查询(内连接、左外连接、右外连接)】
  3. SOLIDWORKS 2023出详图和工程图新增功能
  4. 寒假11:寂寞的数、连续正整数的和、学做菜
  5. ValueError: Cannot assign “<...>“: the current database router prevents this relation.
  6. 提升计算机科学素养,中职学生计算机科学与技术专业素养提升策略
  7. python 设计单张扑克牌类Card 设计整副扑克牌类Cards
  8. coffeescript_在客户端上使用CoffeeScript
  9. oracle报错imp报错00008,Oracle imp导入数据时报IMP-00032与IMP-00008的解决方法
  10. Maya无法创建新模型解决方案1