❶ 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;
}