❶ 一個數字在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