国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

C 整數(shù)類(lèi)型

2018-05-20 15:01 更新

學(xué)習(xí)C - C 整數(shù)類(lèi)型

帶符號(hào)的整數(shù)類(lèi)型

我們有五種基本類(lèi)型的變量來(lái)存儲(chǔ)帶符號(hào)的整數(shù)值,因此可以存儲(chǔ)正值和負(fù)值。

每種類(lèi)型由不同的關(guān)鍵字或關(guān)鍵字的組合指定,如下表所示。

類(lèi)型名稱(chēng)字節(jié)數(shù)
signed char1
short2
int4
long4
long long8

以下是這些類(lèi)型的變量的一些聲明:

short shoe_size; 
int house_number; 
long long star_count;

類(lèi)型名稱(chēng)short,long和long long可以寫(xiě)成short int,long int和long long int,并且可以選擇性地在前面簽署關(guān)鍵字。

但是,這些類(lèi)型幾乎總是以縮寫(xiě)形式寫(xiě)成,如上表所示。

類(lèi)型int也可以寫(xiě)為signed int。

您可以存儲(chǔ)的值范圍取決于您使用的特定編譯器。

例子


#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é)果。


無(wú)符號(hào)整數(shù)類(lèi)型

一些數(shù)據(jù)總是正的。

對(duì)于這些數(shù)據(jù),您不需要提供負(fù)值。

對(duì)于每個(gè)有符號(hào)整數(shù),存在相應(yīng)的無(wú)符號(hào)類(lèi)型整數(shù),無(wú)符號(hào)類(lèi)型與簽名類(lèi)型占用相同的內(nèi)存量。

每個(gè)未簽名的類(lèi)型名稱(chēng)是帶有關(guān)鍵字unsigned的前綴的帶符號(hào)類(lèi)型名稱(chēng)。

下表顯示了可以使用的無(wú)符號(hào)整數(shù)類(lèi)型的基本集合。

類(lèi)型名稱(chēng)字節(jié)數(shù)
unsigned char1
unsigned short 或 unsigned short int2
unsigned int4
unsigned long 或 unsigned long int4
unsigned long long 或 unsigned long long int8

使用給定的位數(shù),可以表示的不同值的數(shù)量是固定的。

例如,32位整數(shù)變量可以存儲(chǔ)4,294,967,296個(gè)不同的值。

使用無(wú)符號(hào)類(lèi)型不會(huì)提供比對(duì)應(yīng)的簽名類(lèi)型更多的值。

以下是無(wú)符號(hào)整數(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ù)常量

因?yàn)槟憧梢杂胁煌?lèi)型的整數(shù)變量,所以我們有不同類(lèi)型的整數(shù)常量。

例如,如果你只寫(xiě)整數(shù)值100,那將是int類(lèi)型。

如果你想確定它是長(zhǎng)類(lèi)型,你必須在數(shù)值中附加一個(gè)大寫(xiě)或小寫(xiě)的字母L.

所以100作為一個(gè)長(zhǎng)的值寫(xiě)為100L。

要聲明和初始化變量my_value,您可以這樣寫(xiě):

long my_value = 123456789L;

您使用負(fù)號(hào)寫(xiě)負(fù)整數(shù)常量,例如:

int decrease = -4; 
long  my_value = -100000L;

您可以通過(guò)添加兩個(gè)L來(lái)指定整數(shù)常量為long long類(lèi)型:

long long my_value = 123456789LL;

要將常數(shù)指定為無(wú)符號(hào)類(lèi)型,請(qǐng)附加一個(gè)U,如以下示例所示:

unsigned int count = 100U; 
unsigned long value = 999999999UL; 

要存儲(chǔ)最大幅度的整數(shù),您可以定義如下變量:

unsigned long long my_value = 9876543212345678ULL;

ULL指定初始值為unsigned long long類(lèi)型。

十六進(jìn)制常量

您可以以十六進(jìn)制形式編寫(xiě)整數(shù)值,這是16位。

十六進(jìn)制數(shù)字的數(shù)字相當(dāng)于十進(jìn)制值0到15,它們由0到9和A表示為F(或a到f)。

十六進(jìn)制數(shù)字用前綴 0x 0X 寫(xiě)入。

十六進(jìn)制常數(shù)可以有一個(gè)后綴。

以下是十六進(jìn)制常量的一些示例:

0xFFFF
0x123456EE
0xFABABULL

八進(jìn)制常數(shù)

一個(gè)八進(jìn)制值是一個(gè)基數(shù)8。

每個(gè)八進(jìn)制數(shù)字具有從0到7的值,其對(duì)應(yīng)于二進(jìn)制的三位。

以零開(kāi)始的整數(shù)常數(shù)(如014)將被解釋為八進(jìn)制數(shù)。

014是十進(jìn)制值12的八進(jìn)制等效值。

以下代碼以十進(jìn)制,八進(jìn)制和十六進(jìn)制打印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ù)溢出

如果一個(gè)整數(shù)嘗試為其類(lèi)型變得太大,會(huì)發(fā)生什么?

讓我們?cè)O(shè)置一個(gè)整數(shù)到它最大的可能值,添加它。

嘗試使用帶符號(hào)和無(wú)符號(hào)類(lèi)型。

printf()函數(shù)使用%u說(shuō)明符來(lái)顯示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ù)無(wú)符號(hào)int變量j(如里程表)從0開(kāi)始,但int變量i始于-2147483648。

上面的代碼生成以下結(jié)果。

例2

以下代碼使用整數(shù)類(lèi)型的便攜式名稱(chēng)。


#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é)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)