型別轉換
字面值常量
算術型別包括整型(integral type,包括字元和布林型別)和浮點型。
型別含義
最小尺寸
bool
布林型別
未定義char
字元8bit
wchar_t
寬字元16bit
char16_t
unicode 字元
16bit
char32_t
unicode字元
32bit
short
短整型16bit
int整型
16bit
long
長整形32bit
long long
長整形64bit
float
單精度浮點數
6位有效數字
double
雙精度浮點數
10位有效數字
long double
擴充套件精度浮點數
10位有效數字
bool 的取值是true
(1)orfalse
(0)
其中char的大小與乙個機器位元組一樣,其他字元型別用於擴充套件字符集。
可通過限定詞unsigned
表示無符號型別,其中unsigned int
可以縮寫為unsigned
。
例如c++中對部分型別範圍的定義如下:
#define int_min (-2147483647 - 1)
// minimum (signed) int value
#define int_max 2147483647
// maximum (signed) int value
#define uint_max 0xffffffff
// maximum unsigned int value
#define long_min (-2147483647l - 1)
// minimum (signed) long value
#define long_max 2147483647l
// maximum (signed) long value
#define ulong_max 0xfffffffful
// maximum unsigned long value
型別所能表示的值的範圍決定了轉換的過程:
當乙個算術表示式中既有unsigned int
又有int
時,int
值就會被轉化為無符號數(等同於將int
值賦給unsigned int
)
unsigned u =10;
int i =-42
;std::cout/-84
std::cout/int_max+u-i
切勿混用帶符號型別和無符號型別
形如42
的值被稱為字面值常量(literal),每個字面值常量都對應役種資料型別,字面值常量的形式和值決定了它的資料型別。
0
開頭的整數代表8進製數;
0x
或0x
開頭的代表十六進製制數。
例如:20
、024
、0x14
都代表了數值20。
浮點型字面值表示為乙個小樹或以科學記數法表示的指數,其中指數部分用e
或e
表示:
3.14159
、3.14159e0
、0.
、0e0
、.001
。
單引號括起來的的乙個字元稱為char
型字面值,雙引號括起來的則是字串字面值
char a =
'a'//字元字面值
char s[12]
="hello world!"
//字串字面值
字串字面值的型別實際上是由常量字元構成的array
。
字首型別說明
uchar16_t
unicode16字元
uchar32_t
unicode32字元
lwchar_t
寬字元u8
char
utf-8
字尾型別說明
u or u
unsigned
整型字面值
l or l
long
ll or ll
long long
f or f
float
浮點型字面值
l or l
long double
例如:3.14f
=float(3.14)
C Primer讀書筆記之基本內建型別
c 內建型別見下表 型別 含義儲存空間 bool 布林型 char 字元型8位 wchar t 寬字元型 16位short 短整數16位 int整數 32位long 長整數32位 float 單精度浮點型 32位 7位有效位 double 雙精度浮點型 64位 15位有效位 long double ...
C primer 讀書筆記
第2 章 變數和基本型別 1 變數直接初始化和變數 複製初始化 int ival 1024 direct initialization int ival 1024 copy initialization 初始化不是賦值 2 內建型別復 制初始化和直接初始化幾乎沒有區別 但 對類型別物件來 說,有些初...
C Primer讀書筆記
前些日子開始看 c primer 順便做一些筆記,既有書上的,也有自己理解的。因為剛學c 不久,筆下難免有謬誤之處,行文更是凌亂 所幸不是用來顯配的東西,發在linuxsir只是為了方便自己閱讀記憶,以防只顧上網忘了正事。書看了不到一半,所以大約才寫了一半,慢慢補充。const要注意的問題 1 下面...