❶ c語言 怎麼區分當前系統是32位還是64位
32位和64位指的是操作系統的位數,映射到C語言中,最直觀的就是指針類型佔用的位元組數。
1 32位系統:
地址佔32位,所以指針類型同樣佔32位,即4位元組。
2 64位系統:
地址佔64位,所以指針類型同樣佔64位,即8位元組。
於是,只需要判斷任意一個指針的sizeof值,即可獲取到位數。
如
intmain()
{
intbits=sizeof(char*);
if(bits==4)printf("32位 ");
elseif(bits==8)printf("64位 ");
elseprintf("others,bits=%d ",bits);
}
❷ 在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位有效數字。
❸ 64位系統下C語言中int值的取值范圍
64位機器中,int佔32位,取值范圍為-2147483648~2147483647(-2^32~2^32-1)。
int類型的情況:
shortint類型可能佔用比int類型更少的存儲空間,C保證short類型至少16位長,用於只需小數值的場合以節省空間。
longint類型(或簡寫為long類型)可能佔用比int類型更多的存儲空間,C保證short類型至少32位長,用於使用大樹枝的場合。
longlongint類型(或簡寫為longlong類型)可能佔用比long類型更多的存儲空間,C保證short類型至少64位長,用於使用更大數值的場合。
(3)64位c語言類型擴展閱讀
C語言的整型溢出問題int
int為4位元組32位,其中首位用0表示正數,用1表示為負數。因此對於
最大正數可以表示為:0x7fffffff(7的二進制為0111,f二進制為1111)
最大負數(-1)可以表示為:0xffffffff
最小負數可以表示為:0x80000000(8的二進制為1000)
負數為正數的源碼取反碼再取補碼,過程如下:
1、-1的原碼:
2、得反碼:
3、得補碼:
❹ C語言程序設計中如何輸出一個64位的整數
1、ANSI C99標准中並沒有64位整數類型。但是,許多實際的編譯器,都實現了對64位整數類型的支持。因為沒有這方面的標准,所以具體的語法描述方式略有不同,一般Windows平台,用__int64的關鍵字,而Linux平台則使用long long的描述方法。
2、有人做了測試,如下圖所示:
綜合上圖可以得出如下幾點:
a:long long定義方式可以用於gcc/g++,不受平台限制,但不能用於VC6.0。
b:__int64是Win32平台編譯器64位長整型的定義方式,不能用於Linux。
c:「%lld」用於Linux i386平台編譯器,」%I64d」用於Win32平台編譯器。
d:cout只能用於C++編譯,在VC6.0中,cout不支持64位長整型。
3、如果要使用64位的整數,盡量使用最新的編譯器,Windows平台,盡量使用VS的較新版本,Linux平台,建議將gcc/g++升級到最新版本。
❺ C語言。在64位系統下int和long有什麼區別應用方面有什麼不同
在64位系統下,int為了與之前的兼容,仍佔4位元組32位,而long被擴展到了8位元組64位。
二者不同包括:
1 占空間不同,這一點之前已經說過了;
2 表達范圍不同:
由於占空間不同,long可以表示更大的范圍,具體為
int 范圍為-2147483648~2147483647;
long的范圍為-9223372036854775808 ~ 9223372036854775807;
3 輸入輸出時使用的格式字元不同。int使用%d,long使用%ld。
在應用上,採用較小優先的原則,如果int的范圍足夠計算不會溢出,那麼就採用int;當int不足計算需要時,採用long。
❻ C語言中的64位(VC)
long long 是gnu C/C++中定義的類型,VC不支持
和它相對應的vc類型是__int64,只是輸入輸出沒有g++方便
❼ C語言在64/32位下區別如何,裝換方便嗎
1、基本沒有區別,僅在少量數據類型比如long和unsigned long上,64位的數據范圍更大
2、32位和64位系統基本沒有差別,一般用戶不可能體會出來差異。
3、C語言出現於1973年,也就是四十多年前,只是學習的話對電腦硬體沒什麼需求。
❽ c語言中如何定義64位整數,希望路過的神牛指點
C語言中變數定義語句前面不能有非變數定義語句
C++則可以在需要的時候定義變數
if(n==0) return ;
int t,i;//C語言中這里定義變數是非法的,C++則是合法的
❾ C語言 四種基本數據類型
C語言有四種基本數據類型:整型,浮點型,指針,聚合類型(數組和結構體)。
1、整型家族有九種數據類型:字元型(char),
有符號字元型(signed
char),無符號字元型
(unsigned
char),短整型(
short)
,無符號短整型(
unsigned
shortv)
,整型(
intv)
,無符號整型(unsigned
int),長整型(
long),無符長整型(unsigned
long)。
2、浮點型:浮點型包括單精度型和雙精度型。
(1)單精度型:一般佔4個位元組(32位),float
a=4.5。
(2)雙精度型:一般佔8個位元組(64位),double a=4.5。
3、指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points
to)存在電腦存儲器中另一個地方的值。
4、聚合指對有關的數據進行內容挑選、分析、歸類,最後分析得到人們想要的結果,主要是指任何能夠從數組產生標量值的數據轉換過程。
(9)64位c語言類型擴展閱讀:
C語言中變數的命名規則:
1、命名應當直觀且可以拼讀,可望文知意,便於記憶和閱讀。
標識符最好採用英文單詞或其組合,不允許使用拼音。程序中的英文單詞一般不要太復雜,用詞應當准確。
2、命名的長度應當符合「min-length
&&
max-information」原則。
C
是一種簡潔的語言,
命名也應該是簡潔的。例如變數名MaxVal
就比MaxValueUntilOverflow
好用。標識符的長度一般不要過長,較長的單詞可通過去掉「母音」形成縮寫。
3、當標識符由多個片語成時,每個詞的第一個字母大寫,其餘全部小寫。
比如:int
CurrentVal;
這樣的名字看起來比較清晰,遠比一長串字元好得多。
4、盡量避免名字中出現數字編號,如Value1,Value2
等,除非邏輯上的確需要編號。比如驅動開發時為管腳命名,非編號名字反而不好。
5、對在多個文件之間共同使用的全局變數或函數要加范圍限定符(建議使用模塊名(縮寫)作為范圍限定符),如
GUI_
,etc。
參考資料來源:網路—整型
參考資料來源:網路—浮點型
參考資料來源:網路—指針
參考資料來源:網路—變數
❿ 怎麼設定64位數據類型,C語言的
根據編譯器不同有以下兩種格式:
定義:long long a;
格式符:%lld // 是兩個 英文小寫字母 'l'
定義:__int64 a; //前面是兩個下劃線
格式符:%I64d //大寫字母 ' I '
比如:
long long a;
scanf("%lld",&a);
或
__int64 a;
scanf("%I64d",&a);
當然輸出格式符也是一樣的!