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代表負數。
#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;
}
無符号數
無符号數最高位不是符号位,而就是數的一部分,無符号數不可能是負數。
#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每日頭條,我们将持续为您更新最新资讯!