int型变量占多少个字节?
引自 http://topic.csdn.net/t/20010521/10/128376.html
int型变量有时候占4个字节(在Win32),有时候占2个字节(在DOS)
这个int类型的大小到底是跟编译器有关,还是跟CPU有关,还是跟操作系统有关?
所谓的16位32位64位系统是由cpu决定的,由机器指令的寻址、寄存器位数决定的
os受cpu的限制,但在32位的cpu下16位的os也可以跑(就向上面提到的所谓纯dos)
很多os是向前兼容的,就是使以前的程序也能运行,如果编译器本身是16位时代做的,那么os会提供一个模拟16位的子环境供这个编译器使用
int和void*长度应该是一样的(16位的时候的20位的指针是两个16位错位加起来的)
非要转牛角尖的话,int只是语言定义里面的一个关键字,只对compiler可见,complier说它是几位就是几位,和os/cpu都没关系
永远都用sizeof是最安全的办法,但sizeof只是编译时常量,不能做到二进制兼容(移植)
说 int和void*一样长只是因为在一般情况下它们都应该可以放到单个寄存器里,其实这样说很不确切,还是不要这样理解的好,说在xx位的cpu上int 是多少位只是因为这级别的cpu有对xx位数据进行操作的单条指令(因为寄存器是xx位)(可能会有扩展指令,我不清楚,但关键看寄存器的位数),从而编 译器就图个方便把int做为xx位,这也不一定的,譬如以后64位机器出来了,可能编译器只是把long扩到64位,而int还是当作32,也挺合适的
呵呵,这也就是为什么很多程序不用int,short,long,而是自己定义一大把int32_t, int16_t, uint32_t, ...,以后不管cpu/compiler怎么变,它只需要改改自己的typedef
是 不是觉得short, unsigned short(or WORD)定义出来的就一定是16位而long, unsigned long(DWORD)定义出来的就一定是32位呢?WORD和DWORD我是相信的,因为它们是M$VC里typedef了的,剩下的不还是依赖于编译 器么?
float存在的理由是因为存在浮点数,double存在的理由是因为需要处理精度更高的浮点数,int存在的理由是因为存在整数,long存在的理由是需要处理值域更大的整数,short存在的理由是为了节省空间处理值域较小的整数
int的意义在于当你需要定义一个循环变量(i=0; i<100; i++)的时候,你不需要费脑筋考虑到底用long还是用short,要不要加unsigned.............
标准之所以没有规定int、short、long的位数而把它们留给编译器自己决定,就是为了在硬件进化的时候编译器可以随之进化呀。
int型变量占多少个字节?相关推荐
- 一个int型指针占几个字节,跟指针的类型有关系吗?(2020.11)
由于这两天看的数据结构都跟C语言相关,这2天的代码中都遇到了指针的问题,所以今天就看了一些关于指针的博客,然后突然想到一个问题,一个int型的指针占几个字节. 一个int型变量占4个字节,那一个int ...
- C/C++中一个int型指针占几个字节?
答案:一个指针在32位的计算机上,占4个字节: 一个指针在64位的计算机上,占8个字节. 指针变量根据"基类型"的不同,有 int * 型,float * 型,do ...
- php整型占几个字节,转:int类型究竟占几个字节
最近在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节.后来,查了The C Programming language这本书,里面有一句话是这样的:Each co ...
- sizeof(int)为什么输出的是4而不是2呢,int类型究竟占几个字节
以上文章来自:https://blog.csdn.net/weixin_42339460/article/details/81455103 http://charlesxie.blog.51cto.c ...
- c语言中长整型的作用,C语言,整形和长整型都占四个字节?
C语言中,整型常量和长整型常量,有什么区别? 整型常量和长整型常量(包括有符号的和无符号的),为什么占用字节数和一.指代不同 整型常量:是通常的整数,包括正整数.负整数和0,其数据类型显然是整型. 长 ...
- int类型究竟占几个字节(转)
我最近也在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节.后来,别人查了The C Programming language这本书,里面有一句话是这样的: Ea ...
- 指针4-指针的运算和指针变量占几个字节
#include <stdio.h> //2018-05-29/*指针变量的运算指针不能相加,不能相乘,也不能相除如果两个指针变量指向的是同一快连续空间中的不同存储单元则这两个指针变量才可 ...
- c语言int转换成float,int怎么转化为float 将 int型变量n转换成float型变量的方法是...
请问C语言中如何将int转换为float 将 int型变量n转换成float型变量的方法是 A float n B (float )n C float( n) D( float) ( n)不懂小编的人 ...
- 一个int类型到底占多少个字节
一个int占多少个字节? 这个问题我们往往得到的答案是4. 但是int到底占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes ...
最新文章
- 2003 DHCP升级到2008 DHCP
- 我可以在同一页面上使用多个版本的jQuery吗?
- 易百教程人工智能python修正-人工智能无监督学习(聚类)
- java中content啥意思_JSTL标签中的body-content标签体内容输出格式的介绍
- Python 可变数据类型和不可变数据类型 - Python零基础入门教程
- 2014计算机技术与软件专业技术资格 网络工程师考点,全国计算机技术与软件专业技术资格(水平)考试2014年下半年 网络工程师 答案详解.pdf...
- xutils找id报空指针异常
- 临界区设计太大或太小有何缺点_空压机100课之016:离心式压缩机的结构、原理及优缺点...
- 【Away3D代码解读】(一):主要类及说明
- java面试题 接口和抽象类的区别是什么
- 读书笔记-互联网鲇鱼法则
- 用matlab画相频曲线_matlab 幅频特性 相频特性代码,图片
- mysql根据身份证得到年龄_MySQL根据身份证获取省份 年龄 性别
- 老式计算机如何设置u盘启动,新旧主板BIOS设置U盘启动详细分析
- MODIS标准数据产品类型
- 爬虫(7):忽略安全证书爬取12306数据
- JS 改变HTML样式
- ML之PDP:基于titanic泰坦尼克是否获救二分类预测数据集利用PDP部分依赖图对RF随机森林实现模型可解释性案例
- 用计算机怎么排列名次,excel如何用RANK函数做升序降序排序排名
- 【远程编辑工具UE】超好用的工具UltraEdit(UE)远程连接Linux的方法,以及FTP Component Failuer连接失败的解决方法
热门文章
- FleaPHP 开发指南 - 2. FleaPHP 中的 MVC 模式
- 自动化(四)appium真机远程控制和远程群控
- 视频像素数据_从摄像头到驱动
- [网络安全]实操DVWS靶场复现CSRF漏洞
- 最大后验估计(Maximum-a-Posteriori (MAP) Estimation) 【转】
- 10 个 MySQL 经典错误【转】
- c语言图片处理函数库,C语言图形开发库函数graphics.doc
- CSP-S 2020
- Apache--配置虚拟主机
- logstash 报错Bad file descriptor - Bad file descriptor