首页
/
每日頭條
/
科技
/
c語言為什麼要分多種整型數據
c語言為什麼要分多種整型數據
更新时间:2024-07-21 01:15:08
整型

short、int、long、long long

數據類型 占用空間

short(短整型) 2字節

int(整型) 4字節

long(長整形) Windows為4字節,Linux為4字節(32位),8字節(64位)

long long(長長整形) 8字節

注意

需要注意的是,整型數據在内存中占的字節數與所選擇的操作系統有關。雖然 C 語言标準中沒有明确規定整型數據的長度,但 long 類型整數的長度不能短于 int 類型, short 類型整數的長度不能長于 int 類型。

當一個小的數據類型賦值給一個大的數據類型,不會出錯,因為編譯器會自動轉化。但當一個大的類型賦值給一個小的數據類型,那麼就可能丢失高位。

整型常量 所需類型

10 代表int類型

10l,10L 代表long類型

10ll, 10LL 代表long long類型

10u, 10U 代表unsigned int類型

10ul, 10UL 代表unsigned long類型

10ull, 10ULL 代表unsigned long long類型

打印格式 含義

%hd 輸出short類型

%d 輸出int類型

%l 輸出long類型

%ll 輸出long long類型

%hu 輸出unsigned short類型

%u 輸出unsigned int類型

%lu 輸出unsigned long類型

%llu 輸出unsigned long long類型

#include <stdio.h> int main() { short a = 10; int b = 10; long c = 10l; //或者10L long long d = 10ll; //或者10LL printf("sizeof(a) = %u\n", sizeof(a)); printf("sizeof(b) = %u\n", sizeof(b)); printf("sizeof(c) = %u\n", sizeof(c)); printf("sizeof(c) = %u\n", sizeof(d)); printf("short a = %hd\n", a); printf("int b = %d\n", b); printf("long c = %ld\n", c); printf("long long d = %lld\n", d); unsigned short a2 = 20u; unsigned int b2 = 20u; unsigned long c2= 20ul; unsigned long long d2 = 20ull; printf("unsigned short a = %hu\n", a2); printf("unsigned int b = %u\n", b2); printf("unsigned long c = %lu\n", c2); printf("unsigned long long d = %llu\n", d2); return 0; }

整型int(比較常用)

int整型變量的定義和輸出:

打印格式 含義

%d 輸出一個有符号的10進制int類型

%o(字母o) 輸出8進制的int類型

%x 輸出16進制的int類型,字母以小寫輸出

%X 輸出16進制的int類型,字母以大寫寫輸出

%u 輸出一個10進制的無符号數

#include <stdio.h> int main() { int a = 123; //定義變量a,以10進制方式賦值為123 int b = 0567; //定義變量b,以8進制方式賦值為0567 int c = 0xabc; //定義變量c,以16進制方式賦值為0xabc printf("a = %d\n", a); printf("8進制:b = %o\n", b); printf("10進制:b = %d\n", b); printf("16進制:c = %x\n", c); printf("16進制:c = %X\n", c); printf("10進制:c = %d\n", c); unsigned int d = 0xffffffff; //定義無符号int變量d,以16進制方式賦值 printf("有符号方式打印:d = %d\n", d); printf("無符号方式打印:d = %u\n", d); return 0; }

有符号數和無符号數區别

有符号數

有符号數是最高位為符号位,0代表正數,1代表負數。

c語言為什麼要分多種整型數據(C語言基礎-數據類型-05整型和sizeof關鍵字)1

#include <stdio.h> int main() { signed int a = -1089474374; //定義有符号整型變量a printf("%X\n", a); //結果為 BF0FF0BA //B F 0 F F 0 B A //1011 1111 0000 1111 1111 0000 1011 1010 return 0; }

無符号數

無符号數最高位不是符号位,而就是數的一部分,無符号數不可能是負數。

c語言為什麼要分多種整型數據(C語言基礎-數據類型-05整型和sizeof關鍵字)2

#include <stdio.h> int main() { unsigned int a = 3236958022; //定義無符号整型變量a printf("%X\n", a); //結果為 C0F00F46 return 0; }

當我們寫程序要處理一個不可能出現負值的時候,一般用無符号數,這樣可以增大數的表達最大值。

有符号和無符号整型取值範圍

數據類型 占用空間 取值範圍

short 2字節 -32768 到 32767 (-215 ~ 215-1)

int 4字節 -2147483648 到 2147483647 (-231 ~ 231-1)

long 4字節 -2147483648 到 2147483647 (-231 ~ 231-1)

unsigned short 2字節 0 到 65535 (0 ~ 216-1)

unsigned int 4字節 0 到 4294967295 (0 ~ 232-1)

unsigned long 4字節 0 到 4294967295 (0 ~ 232-1)

sizeof關鍵字

sizeof不是函數,所以不需要包含任何頭文件,它的功能是計算一個數據類型的大小,單位為字節

sizeof的返回值為size_t,size_t類型在32位操作系統下是unsigned int,是一個無符号的整數

sizeof返回的占用空間大小是為這個變量開辟的大小,而不隻是它用到的空間。和現今住房的建築面積和實用面積的概念差不多。

#include <stdio.h> int main() { int a; int b = sizeof(a);//sizeof得到指定值占用内存的大小,單位:字節 printf("b = %d\n", b); size_t c = sizeof(a); printf("c = %u\n", c);//用無符号數的方式輸出c的值 return 0; }


謝謝閱讀!如有錯譯,歡迎各位朋友評論區糾正。

喜歡C\C 的朋友可以點個關注,搜索文章不迷路!(内容持續更新中)

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
開發商沒有裝入戶網線
開發商沒有裝入戶網線
關于網線的布局陸續都說了好多,大家可以後台回複“網線”看專題。▲看上圖示意圖,一般北方地區,開放商交房以後,局部水電都是做好的;上圖綠色示意線條為網線布局,也就是大部分開發商從弱電箱已經給各個卧室走好了網線;普通家庭的要求其實很簡單,就是普...
2024-07-21
powerplay何時發售
powerplay何時發售
來源:cnBeta《搗蛋鵝》遊戲開發商Panic近日在Twitter上表示,旗下采用單色屏設計的Playdate掌機将于2021年内推出。不過在正式上市之前,Panic剛剛為Playdate推出了一項新功能——可在電腦上鏡像顯示掌機端的屏幕...
2024-07-21
orico m2硬盤
orico m2硬盤
用了十來年的500G老硬盤,橡膠已經老化,殼體已經開裂,花了10來塊錢,運行不掉速、舊貌換新顔。這就是ORICO2.5寸SATA硬盤盒,商務黑、象牙白、寶石藍、櫻花粉四種配色可供選擇,還标配一根高速數據線。ABS内置海綿表面防滑紋,一體成型...
2024-07-21
攝影師推薦修圖軟件
攝影師推薦修圖軟件
PS這個就沒什麼好說的了,隻是你不要以為會修個斑去個痘就行了,圖層通道色階曲線蒙版剪切圖層圖層不透明度圖層混合模式可選顔色黑白……等命令功能你都得熟。最新的PS版本是CC2014,不過版本不必過分追求。2.CameraRAW這并不是一個獨立...
2024-07-21
手機号碼如何分辨出别人的年齡
手機号碼如何分辨出别人的年齡
手機号碼如何分辨出别人的年齡?你的手機号碼用了多久了?今天一分鐘教會大家查詢你手機号碼的在網年齡,接下來我就以我的移動号碼為例給大家做演示,怕記不住的朋友記得點贊收藏慢慢觀看,今天小編就來聊一聊關于手機号碼如何分辨出别人的年齡?接下來我們就...
2024-07-21
Copyright 2023-2024 - www.tftnews.com All Rights Reserved