c语言计算int型数据的字长,求大神详细解释

c语言计算int型数据的字长,求大神详细解释,第1张

这个和 *** 作系统有关,一般int的长度都会采用机器字长,比如win32系统,int占4字节,32位;

如果是64位主机,int占64位,但这不是一定的,还要看编译器类型等因素。

在C语言中,double、long、unsigned、int、char类型数据所占字节数和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):

sizeof(short int)<=sizeof(int)

sizeof(int)<=sizeof(long int)

short int至少应为16位(2字节)

long int至少应为32位。 unsigned 是无符号的意思。

例如:

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个字节

32位编译器

char :1个字节

char(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)

short int : 2个字节

int: 4个字节

unsigned int : 4个字节

float: 4个字节

double: 8个字节

long: 4个字节

long long: 8个字节

unsigned long: 4个字节

64位编译器

char :1个字节

char(即指针变量): 8个字节

short int : 2个字节

int: 4个字节

unsigned int : 4个字节

float: 4个字节

double: 8个字节

long: 8个字节

long long: 8个字节

unsigned long: 8个字节

for的条件,你是相对pow函数的返回值强制取整,所以应该是

for(i=1;(x%(int)(pow(10,i)))==0;)

你写成了

for(i=1;(x%int(pow(10,i)))==0;)

缺少这个小括号,编译器认为你在定义变量

=======================

还有,求整数长度,你用itoa转成字符串,然后strlen求长度不就是了多简单的事啊

char就是1字节(固定不变),short不少于2字节,int不少于short,long不少于4字节,且long不少于int,long long不少于long。

除了char,其他整型范围都是相对而言的,确保后一种的宽度不低于前一种即可(可能相等),在不同的年代,计算机硬件发展不同,内存、外存容量也不同,主流编译器在设计的时候会综合考虑计算机硬件的情况,来设计每一种数据类型的实际宽度。

char型在任何情况下都是占1个字节,而比如int型,它的长度与环境的字长相同,在16位的环境中,它占16位,2个字节;32位环境中占4个字节。

扩展资料

在C语言中可以用sizeof运算符,获取数据类型或者变量所占的内存字节数。示例代码如下:

#include int main()

{

printf("%d\t%d\t%d\n", sizeof(int), sizeof(short), sizeof(long));

return 0;

}

很想知道你这样做的场景是什么?如果是只想取前数组的前4个数,直接根据a[i](i=0,1,2,3)取就可以了,如果你是非要变成4个数字的数组,那就重新定义一个数组,把之前的数据前4个数copy过去。

以上就是关于c语言计算int型数据的字长,求大神详细解释全部的内容,包括:c语言计算int型数据的字长,求大神详细解释、求一个int型整数的长度、C语言的char,short,int和long类型分别有多长等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9389932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存