W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
我們有五種基本類型的變量來存儲帶符號的整數(shù)值,因此可以存儲正值和負值。
每種類型由不同的關(guān)鍵字或關(guān)鍵字的組合指定,如下表所示。
類型名稱 | 字節(jié)數(shù) |
---|---|
signed char | 1 |
short | 2 |
int | 4 |
long | 4 |
long long | 8 |
以下是這些類型的變量的一些聲明:
short shoe_size; int house_number; long long star_count;
類型名稱short,long和long long可以寫成short int,long int和long long int,并且可以選擇性地在前面簽署關(guān)鍵字。
但是,這些類型幾乎總是以縮寫形式寫成,如上表所示。
類型int也可以寫為signed int。
您可以存儲的值范圍取決于您使用的特定編譯器。
例子
#include <stdio.h>
int main(void)
{
int ten = 10;
int two = 2;
printf("%d minus %d is %d\n", ten, 2, ten - two );
return 0;
}
上面的代碼生成以下結(jié)果。
一些數(shù)據(jù)總是正的。
對于這些數(shù)據(jù),您不需要提供負值。
對于每個有符號整數(shù),存在相應(yīng)的無符號類型整數(shù),無符號類型與簽名類型占用相同的內(nèi)存量。
每個未簽名的類型名稱是帶有關(guān)鍵字unsigned的前綴的帶符號類型名稱。
下表顯示了可以使用的無符號整數(shù)類型的基本集合。
類型名稱 | 字節(jié)數(shù) |
---|---|
unsigned char | 1 |
unsigned short 或 unsigned short int | 2 |
unsigned int | 4 |
unsigned long 或 unsigned long int | 4 |
unsigned long long 或 unsigned long long int | 8 |
使用給定的位數(shù),可以表示的不同值的數(shù)量是固定的。
例如,32位整數(shù)變量可以存儲4,294,967,296個不同的值。
使用無符號類型不會提供比對應(yīng)的簽名類型更多的值。
以下是無符號整數(shù)變量聲明的示例:
unsigned int count; unsigned long population;
以下代碼顯示如何聲明unsigned int。
#include <stdio.h>
int main(void)
{
unsigned int iResponse = 0;
printf("%d", iResponse);
return 0;
}
上面的代碼生成以下結(jié)果。
因為你可以有不同類型的整數(shù)變量,所以我們有不同類型的整數(shù)常量。
例如,如果你只寫整數(shù)值100,那將是int類型。
如果你想確定它是長類型,你必須在數(shù)值中附加一個大寫或小寫的字母L.
所以100作為一個長的值寫為100L。
要聲明和初始化變量my_value,您可以這樣寫:
long my_value = 123456789L;
您使用負號寫負整數(shù)常量,例如:
int decrease = -4; long my_value = -100000L;
您可以通過添加兩個L來指定整數(shù)常量為long long類型:
long long my_value = 123456789LL;
要將常數(shù)指定為無符號類型,請附加一個U,如以下示例所示:
unsigned int count = 100U; unsigned long value = 999999999UL;
要存儲最大幅度的整數(shù),您可以定義如下變量:
unsigned long long my_value = 9876543212345678ULL;
ULL指定初始值為unsigned long long類型。
您可以以十六進制形式編寫整數(shù)值,這是16位。
十六進制數(shù)字的數(shù)字相當(dāng)于十進制值0到15,它們由0到9和A表示為F(或a到f)。
十六進制數(shù)字用前綴 0x
或 0X
寫入。
十六進制常數(shù)可以有一個后綴。
以下是十六進制常量的一些示例:
0xFFFF 0x123456EE 0xFABABULL
一個八進制值是一個基數(shù)8。
每個八進制數(shù)字具有從0到7的值,其對應(yīng)于二進制的三位。
以零開始的整數(shù)常數(shù)(如014)將被解釋為八進制數(shù)。
014是十進制值12的八進制等效值。
以下代碼以十進制,八進制和十六進制打印100。
#include <stdio.h>
int main(void)
{
int x = 100;
printf("dec = %d; octal = %o; hex = %x\n", x, x, x);
printf("dec = %d; octal = %#o; hex = %#x\n", x, x, x);
return 0;
}
上面的代碼生成以下結(jié)果。
如果一個整數(shù)嘗試為其類型變得太大,會發(fā)生什么?
讓我們設(shè)置一個整數(shù)到它最大的可能值,添加它。
嘗試使用帶符號和無符號類型。
printf()函數(shù)使用%u說明符來顯示unsigned int值。
#include <stdio.h>
#define PAGES 959
int main(void) {
int i = 2147483647;
unsigned int j = 4294967295;
printf("%d %d %d\n", i, i+1, i+2);
printf("%u %u %u\n", j, j+1, j+2);
printf("*%d*\n", PAGES);
printf("*%2d*\n", PAGES);
printf("*%10d*\n", PAGES);
printf("*%-10d*\n", PAGES);
return 0;
}
整數(shù)無符號int變量j(如里程表)從0開始,但int變量i始于-2147483648。
上面的代碼生成以下結(jié)果。
以下代碼使用整數(shù)類型的便攜式名稱。
#include <stdio.h>
#include <inttypes.h> // supports portable types
int main(void)
{
int32_t me32; // me32 a 32-bit signed variable
me32 = 45933945;
printf("First, assume int32_t is int: ");
printf("me32 = %d\n", me32);
printf("Next, let"s not make any assumptions.\n");
printf("Instead, use a \"macro\" from inttypes.h: ");
printf("me32 = %" PRId32 "\n", me32);
return 0;
}
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: