tft每日頭條

 > 科技

 > c語言為什麼要分多種整型數據

c語言為什麼要分多種整型數據

科技 更新时间:2024-08-01 00:11:55
整型

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 的朋友可以點個關注,搜索文章不迷路!(内容持續更新中)

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved