c语言int占几个字节
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言int占几个字节相关的知识,希望对你有一定的参考价值。
不同的编译器,占据的字节也不同,具体如下表所示:
编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节。
扩展资料:
在使用不同编译器时候需要注意他们的数据类型差异,int如此其他数据类型也应当注意,因为并没用人规定某种数据类型应该占据多少字节,以及他所表示的数据是有符号还是无符号,即便有人规定这些内容那么编译器是否愿意按规定来实现谁也说不准。
参考资料:百度百科--整型数据
参考技术A1、16位编译器
char :1个字节
char*(即指针变量): 2个字节
short int : 2个字节
int: 2个字节
unsigned int : 2个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
2、32位编译器
char :1个字节
char*: 4个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节
拓展资料:
整型数据的一般分类如下:
1、基本型:类型说明符为int,在内存中占2个字节。
2、短整型:类型说明符为short int或short。所占字节和取值范围均与基本型相同。
3、长整型:类型说明符为long int或long,在内存中占4个字节。
4、无符号型:类型说明符为unsigned。无符号型又可与上述三种类型匹配而构成:
1)无符号基本型:类型说明符为unsigned int或unsigned。
2)无符号短整型:类型说明符为unsigned short。
3)无符号长整型:类型说明符为unsigned long。
参考技术B 依据程序编译器的不同,int定义的字节数不同。(数据占用内存储器的大小不同)常用的单片机编译器,如KEIL下,51类单片机的C语言中,int代表2个字节(16位);如果是32位RAM处理器的C语言中,则int代表4个字节(32位)
PIC单片机的PICC中8位系列单片机的C语言里int表示16位。
而不少PC端软件的编译器则会根据操作系统或处理器(如64位XP)把int定义为8字节(64位)
所以在多平台上编程的人员需要在使用时注意。
如需定义16位数,可使用short(短、短整数类型)定义。本回答被提问者和网友采纳 参考技术C 根据编译器了,不同的编译器,规定是不一样。ANSI标准定义int是占2个字节,TC是按ANSI标准的,它的int是占2个字节的。但是在VC里,一个int是占4个字节的。 参考技术D 在C/C++语言中,int和long int的所占的字节数与编译器有关,不过现在常用的编译器多认为int和long int相同,均为4字节,short为2字节,char为1字节。
不同的语言不太一样,例如在Pascal中integer为2字节,byte为1字节,而longint为4字节。
C/C++ 网络编程字节序的问题
htons和ntohs
这两函数是不是,客户跟服务机之间,主机发送出去要用htons转成网络字节顺,而服务如果接收要用ntohs,这样配对使用?
还有,在socket中,设置端口,为什么服务端跟客户端都用htons
sockaddr_in servaddr;
servaddr.sin_port = htons(5555);
htons表示short类型的数据由主机字节序转为网络字节序。而ntohs表示是网络字节序转换到主机字节序。
因为历史的原因网络字节序约定为大端(bigedian),而主机字节序位则依据CPU的类型各有不同,我们普通的intel处理器为小端,而powerpc等一些处理器则是大端。那么从主机出去的数据到网络上例如是INTEL,那是要转换的。所以你这个无论是服务器还是客户端,只要是出去的数据都是要经过htonxx这样的函数转换。如果是接收呢,则是要通过ntohxx这样的函数转换的。
设置端口由于是面向网络操作,所以也是要使用htons转换的。本回答被提问者采纳 参考技术B uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlog);
uint16_t ntohs(uint16_t netshort);
这种时候man一下就好了。
以上是关于c语言int占几个字节的主要内容,如果未能解决你的问题,请参考以下文章
谁能讲讲c语言中int占4个字节,一个数字占1个字节,为啥int能定义很多位数字?
C语言中:char占1个字节,数值范围是-128到127. 我想问的是:char的数值范围为啥不是-128到128