❶ c语言数据长度16位和32位什么意思
16位是指操作系统所能表示最大整数由16个二进制数表示,即65536,32位所能表示的能达到4294967296,现在已经有64位的了,而且未来的计算机都将趋于64位。也就是表示数据范围大,对于大型工程能够好的表示。
❷ 一个数字在C语言中是多少个字节
在C语言中,一个数字占4个字节或8个字节。(以下试验都是基于32位计算机系统)
当该数字为整数时,占4个字节(默认转换为int类型);
当该数字为小数时,占8个字节(默认转换为double类型)。
可以通过如下的程序段来验证:
printf("%d\n", sizeof(4)); // 输出4,即占4个字节(转换为int类型,相当于sizeof(int))
printf("%d\n", sizeof(4.5)); // 输出8,即占8个字节(转换为double类型,相当于sizeof(double))
❸ C语言求整数长度或多少位
十进制数字个数 和长度 有多种方法 算得。
下面用两种方法计算。负数有个符号位,长度比位数多 m=1。
占内存的大小用sizeof(int) 可得,通常 32位机为4字节,64位机为8字节。
例如:
#include <stdio.h>
int main(){
int a=123456;
int n,m=0;
char s[60];
if (a<0) m=1;
sprintf(s,"%d",a);
n = strlen(s);
printf("a has digit %d length %d\n",n-m,n);
n=0;
while (1){
a = a/10;
n++;
if (a==0)break;
}
printf("a has digit %d length %d\n",n,n+m);
printf("int has %d bytes\n",sizeof(int) );
return 0;
}
❹ C语言中如何获取数据长度
C语言中字符串有一个结束符'\0',一个正常的字符串的最后一个字符都是'\0',在你定义一个常量字符串时就自动帮你加上去了,比如"abc"其实有4个字符{'a', 'b', 'c', '\0'},最后一个'\0'表示字符串到这就结束了,以防止内存读取越界,同时也以此来计算字符串长度,而不是再传一个int参数表示字符串的长度。因此a在内存中长度为6,但由于最后一个字符'\0'只是结束符,所有一般说长度时会忽略掉最后一个字符
string.h中提供了strlen函数可以方便地计算字符串的长度,不过注意strlen返回值的类型为size_t,x64下定义为uint64_t,x86下为uint32_t,所以记得进行类型转换
第一种:调用C库函数strlen(头文件<string.h>)
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
printf("%d\r\n", (int)strlen(a));
return 0;
}
第二种:手动计算长度
#include <stdio.h>
int main(int argc, char *argv[])
{
char *a = "\x12\x00\x11\x00\x00";
char* p = a;
while ('\0' != *p)
{
p++;
}
printf("%d\r\n", (int)(p - a));
return 0;
}
❺ C语言各类型数据的位数是多少
这个跟系统有关的,你可以通过sizeof各个类型来看字节数,从而算出位数。具体可以用以下代码看
#include<stdio.h>
void main()
{
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long int));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
}
一般我们用的32位系统是:
类型 字节数 位数 范围
int 4 32 -2147483648 ~ 2147483647
long 4 32 同上
float 4 32 -2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38
double 6 64 -2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308
❻ c语言 位域长度
这个主要还是要看编译器以及程序的运行环境。例如普通32位的环境中,位域可以定义为32bit,超过32bit就会报错。
我的理解是LZ书上看到的位域不允许跨2字节是由于运行环境是8bit的。因此在单片机编程中可以定义16bit的ul类型(该单片机的位宽应该是大于等于16bit的)。
我在自己的64位系统上编写了类似的代码,把编译器位宽设置为64位,发现位域就可以达到64bit,超过64bit就会报错。
❼ c语言数据长度16位和32位什么意思
楼上不要胡说!
>>是说16位的机器就是2个,32位是4个吗?
这句话说的不太对,
这个其实指的是编译器的位数,
对于16位编译器(例如,tc),int型占2个字节
对于32位编译器(例如,vc,gcc),int型占4个字节
这里指的是编译器的位数,不是cpu的位数
❽ 在C语言中各种数据类型各占多少位
(一)32位平台:
分为有符号型与无符号型。
有符号型:
short 在内存中占两个字节,范围为-2^15~(2^15-1)
int 在内存中占四个字节,范围为-2^31~(2^31-1)
long在内存中占四个字节,范围为-2^31~2^31-1
无符号型:最高位不表示符号位
unsigned short 在内存中占两个字节,范围为0~2^16-1
unsigned int 在内存中占四个字节,范围为0~2^32-1
unsigned long在内存中占四个字节,范围为0~2^32-1
实型变量:
分单精度 float 和双精度 double 两种形式:
float:占四个字节,提供7~8位有效数字。
double: 占八个字节,提供15~16位有效数字。
(二)16位平台:
1)整型(基本型):类型说明符为int,在内存中占2个字节。
2)短整型:类型说明符为short int或short。所占字节和取值范围均与整型(基本型)相同。
3)长整型:类型说明符为long int或long,在内存中占4个字节。
无符号型:类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
各种无符号类型量所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。
实型变量:
分为单精度(float型)、双精度(double型)和长双精度(long double型)三类。
单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。
双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
长双精度型16 个字节(128位)内存空间,可提供18-19位有效数字。
❾ C语言求整数的长度怎么求也就是有多少位帮帮忙。
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char s[100];
scanf("%s",s);
printf("这个整数是%d位的\n",strlen(s));
return 0;
}
❿ C语言的char,short,int和long类型分别有多长
char就是1字节(固定不变),short不少于2字节,int不少于short,long不少于4字节,且long不少于int,long long不少于long。
除了char,其他整型范围都是相对而言的,确保后一种的宽度不低于前一种即可(可能相等),在不同的年代,计算机硬件发展不同,内存、外存容量也不同,主流编译器在设计的时候会综合考虑计算机硬件的情况,来设计每一种数据类型的实际宽度。
char型在任何情况下都是占1个字节,而比如int型,它的长度与环境的字长相同,在16位的环境中,它占16位,2个字节;32位环境中占4个字节。
(10)c语言数位长度扩展阅读
在C语言中可以用sizeof运算符,获取数据类型或者变量所占的内存字节数。示例代码如下:
#includeintmain()
{
printf("%d %d %d ",sizeof(int),sizeof(short),sizeof(long));
return0;
}