printf中的short int, int, long int和long long int

來源:互聯網
上載者:User

hd: short int

d: int

ld: long int

lld: long long int

Linux基礎資料型別 (Elementary Data Type)大小——int,char,long int,long long int

在Linux作業系統下使用GCC進行編程,目前一般處理器為32位字寬,下面是/usr/include/limit.h檔案對Linux下資料類型的限制及儲存位元組大小的說明。

/* We don't have #include_next. Define ANSI <limits.h> for standard 32-bit words.  */

/* These assume 8-bit 'char's, 16-bit 'short int's,   and 32-bit 'int's and 'long int's.  */

1.char資料類型

char類型資料所佔記憶體空間為8位。其中有符號字元型變數取值範圍為-128~127,無符號型字元變數取值範圍為0~255.其限制如下:

/* Number of bits in a 'char'. */

#  define CHAR_BIT 8          //所佔位元組數

/* Minimum and maximum values a 'signed char' can hold.  */

#  define SCHAR_MIN (-128)

#  define SCHAR_MAX 127

/* Maximum value an 'unsigned char' can hold.  (Minimum is 0.)  */

#  define UCHAR_MAX 255

/* Minimum and maximum values a 'char' can hold.  */

#  ifdef __CHAR_UNSIGNED__

#   define CHAR_MIN 0

#   define CHAR_MAX UCHAR_MAX

#  else

#   define CHAR_MIN SCHAR_MIN

#   define CHAR_MAX SCHAR_MAX

#  endif

2.short int資料類型

short int類型資料所佔記憶體空間為16位。其中有符號短整型變數取值範圍為-32768~32767,無符號短整型變數取值範圍為0~65535.其限制如下:

/* Minimum and maximum values a 'signed short int' can hold.  */

#  define SHRT_MIN (-32768)

#  define SHRT_MAX 32767

/* Maximum value an 'unsigned short int' can hold.  (Minimum is 0.)  */

#  define USHRT_MAX 65535

3.int資料類型int類型資料所佔記憶體空間為32位。其中有符號整型變數取值範圍為-2147483648~2147483647,無符號型整型變數取值範圍為0~4294967295U.其限制如下:

/* Minimum and maximum values a 'signed int' can hold.  */

#  define INT_MIN (-INT_MAX - 1)

#  define INT_MAX 2147483647

/* Maximum value an 'unsigned int' can hold.  (Minimum is 0.)  */

/#  define UINT_MAX 4294967295U

4.long int資料類型

隨著宏__WORDSIZE值的改變,long int資料類型的大小也會發生改變。如果__WORDSIZE的值為32,則long int和int類型一樣,佔有32位。在Linux GCC4.0-i386版本中,預設情況下__WORDSIZE的值為32.其定義如下:

//come from /usr/include/bits/wordsize.h

#define __WORDSIZE 32

在64位機器上,如果__WORDSIZE的值為64, long int類型資料所佔記憶體空間為64位。其中有長整型變數取值範圍為-9223372036854775808L~9223372036854775807L,無符號長整型變數取值範圍為0~18446744073709551615UL.其限制如下:

/* Minimum and maximum values a 'signed long int' can hold.  */

#  if __WORDSIZE == 64

#   define LONG_MAX 9223372036854775807L

#  else

#   define LONG_MAX 2147483647L

#  endif

#  define LONG_MIN (-LONG_MAX - 1L)

/* Maximum value an 'unsigned long int' can hold.  (Minimum is 0.)  */

#  if __WORDSIZE == 64

#   define ULONG_MAX 18446744073709551615UL

#  else

#   define ULONG_MAX 4294967295UL

#  endif

5.long long int資料類型

在C99中,還定義了long long int資料類型。其資料類型限制如下:

#  ifdef __USE_ISOC99

/* Minimum and maximum values a 'signed long long int' can hold.  */

#   define LLONG_MAX 9223372036854775807LL

#   define LLONG_MIN (-LLONG_MAX - 1LL)

/* Maximum value an 'unsigned long long int' can hold.  (Minimum is 0.)  *

# define ULLONG_MAX 18446744073709551615ULL

#  endif /* ISO C99 */

原文:

http://blog.csdn.net/ameyume/article/details/7573112

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.