❶ 一个数字在c语言中是多少个字节
一个数字在C语言中是2、4、8个字节,以int类型、float类型和double类型来表示。
int类型占用2字节内存,表示整数,数据范围在-2^31~2^31-1(-2147483648~2147483647)之间。
float类型占用4字节内存,表示单精度浮点数,数据范围在-2^128 ~ 2^128(-3.40E+38 ~ +3.40E+38)之间。
double类型占用8字节内存,表示双精度浮点数,数据范围在-2^256 ~ 2^256(-1.90E+308 ~ +1.80E+308)之间。
(1)c语言字节扩展扩展阅读:
双精度浮点型类型数值可转换到其他类型的整数或浮点数,反之亦然。双精度浮点型常量的最后一个字符可加上“d”或“D”。其存储格式与浮点型类似,最高位为符号位,次高11位为指数位,其次52位为尾数。
双精度浮点型同数值型比,它能提供更高的数值精度,采用固定存储长度的浮点数形式,每个双精度浮点型数据占8个字节。与数值型数据不同,它的小数点位置是由输入的数据值来决定的,并且只能用于表中的字段。
❷ c语言如何让char扩大容量,储存中文字符串。
用二维数组:
#include<stdio.h>
#include<string.h>
intmain(void)
{
charch[10][4];
strcpy(ch[0],"你");
strcpy(ch[1],"好");
strcpy(ch[2],",");
strcpy(ch[3],"世");
strcpy(ch[4],"界");
strcpy(ch[5],"!");
inti;
for(i=0;i<6;i++)
printf("%s",ch[i]);
return0;
}
❸ 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个字节。
(3)c语言字节扩展扩展阅读
在C语言中可以用sizeof运算符,获取数据类型或者变量所占的内存字节数。示例代码如下:
#includeintmain()
{
printf("%d %d %d ",sizeof(int),sizeof(short),sizeof(long));
return0;
}
❹ C语言中 有没有一种运算可以将字节扩展,比如:abababab 扩展为aabbaabbaabbaabb
如果是显示的话, 很简单. printf("%8s", (char*)pstr); %s中加个数字就行了. 32位就%32s .
如果是真正扩展, 要这样. 8位char 16位short .
char a = 0xAA; //10101010;
short b= 0;
short b = a; //这样就扩展了.
如果是字符串.也是一样先清空.从尾部倒着填充. 比如把把一个字符串向左扩展32位.
#include "string.h"
#include "stdio.h"
void main()
{
char p1[33]={0} ;//设置结束
memset(p1, ' ', 32);// 填充空格
char *p2= "test33133311111111111111";//测试字符串
int i = 31;//循环填充.
int j = strlen(p2)-1;
for(; j>=0; i--,j--)
{
p1[i] = p2[j];
}
puts(p1);
}
❺ c语言中一个字符数据以整数形式输出时 会进行字节拓展吗
字符和字节,可以认为是相同的。。。。。。。。
char 就是8位,刚好一个字节
。。。。。。。
❻ C语言字符数占几个字节,又是多少位。
这个要看字符数是什么数据类型,可以用sizeof(类型)操作符来测试字节数。
1、英文字母:如果是char 型,那么是占用1个字节,8位。如果是string型,应该是两个字节,16位,因为末尾还有个\0字符。
比如:
char c = 'a';//它占用一个字符
char c[] = "a";//占用两个。
char c[] = "abcde";//占用4+1 = 5 个,结尾有一个'\0'
2、数字:有很多种类,从小到大分别为:
short、int、float、long、double
字节为:1个、2个、4个、8个、8个
位数为:8位、16位、32位、64位、64位
3、汉字:理论上说,一个汉字占用两个字节,16位。比如:中国,就占用4个字节,例如:
char c[] = "中国";//占用4+1 = 5个字符
❼ c语言动态数组如何扩充空间
c语言动态数组扩充空间,主要是利用动态存储分配库函数来实现的,常用的有malloc函数和calloc函数。
malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。
例如:
char *x;
x = (char *)malloc(10); //x就指向了包含10个字符单元的存储空间。
(7)c语言字节扩展扩展阅读:
函数定义
其函数原型为void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。
如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。
❽ C语言中符号扩展是什么意思
当一个“短”整型变量的值赋给一个“长”整型变量或以“长”整型变量输出时,要在最左端将短”整值的“符号位”向左添加到使其二进制位数与“长”整型的二进制位数相同。把这个过程称为“符号位扩展”。如:char a=-7;int b=a;,则a的二进制补码是11111001,而b的二进制补码是11111111 11111111 11111111 11111001。b的前面3个字节的全1就是对a的符号位的扩展;若a=7,则b为00000000 00000000 00000000 00000111。
❾ c语言中怎么把一个字节扩展成2字节
没有现成的方法, 自己写代码转换
#include <stdio.h>
// 调用时请保证t有不小于2*slen的空间
void b2w(const unsigned char *s, int slen, unsigned char *t)
{
unsigned char b;
for (int i=0; i<slen; i++)
{
b = s[i] & 0xF0;
b = (b & 0x80) | ((b>>1) & 0x20) | ((b>>2) & 0x08) | ((b>>3) & 0x02);
*t++ = (b>>1) | b;
b = s[i] & 0x0F;
b = (b & 0x01) | ((b<<1) & 0x04) | ((b<<2) & 0x10) | ((b<<3) & 0x40);
*t++ = (b<<1) | b;
}
}
// 按二进制显示字节数组
void showbytes(unsigned char *s, int slen)
{
for (int i=0; i<slen; i++)
{
unsigned char b = 0x80;
for (int k=0; k<8; k++)
{
putchar((b&s[i])? '1': '0');
b>>=1;
}
putchar(' ');
}
putchar('\n');
}
void main()
{
unsigned char s[] = {0x82, 0x41, 0xCB};
unsigned char t[sizeof(s)*2] = {0x00};
b2w(s, sizeof(s)/sizeof(s[0]), t);
showbytes(s, sizeof(s)/sizeof(s[0]));
showbytes(t, sizeof(t)/sizeof(t[0]));
}
❿ C语言一个字节位与两个字节,一个字节的是会符号扩充吗
那需要看单字节是以什么样的数据类型来处理,如果定义成有符号的,会进行符号扩展。
有符号的类型是:char
无符号的类型是:unsigned char