c筆記02---數據類型
1. 整型 int
signed short int 有符號短整型,簡寫:short/int,字長 2 字節(16 位),範圍:-32768~32767(也有的計算機裏面,int 是 4 位)
signed long int 有符號長整型,簡寫:long,字長 4 字節 ;
unsigned short int 無符號短整型,簡寫 unsigned int,2 字節,範圍:0~65535;
unsigned long int 無符號長整型,簡寫 unsigned long,4 字節。
size_t 無符號整型,在不同編譯器上都是 4 字節,代替 unsigned int
2. 浮點型 float
float 單精度浮點數,字長 4 字節
double 雙精度,8 字節
3. 字符型 char
字長 1 字節
字符串聲明:char ss[20];
4. 隱式類型轉換會把佔地小的數據轉換成佔地大的數據,如果數據大小一樣會把有符號的數據轉換成無符號的數據。
5. C 語言中支持如下邏輯操作符(==, !=, >, >=, <, <=, &&, || )
&& 都爲真才爲真;
|| 有一個爲真即爲真;
&& 和 || 具有短路特性
! 也是一個邏輯操作符,可以對一個邏輯表達式的結果求反。
數學操作符優先級高於邏輯操作符
& 表示按位與,可以對兩個二進制補碼進行計算得到一個新的二進制補碼。它可以把某個補碼中特定的位置清 0。
| 表示按位或,可以對兩個二進制補碼進行計算得到一個新的二進制補碼。它可以把某個補碼中特定的位置設置成 1。
^ 表示按位亦或。它可以把某個已知的補碼中特定位置變成相反數字。
~ 表示按位求反,可以對一個二進制補碼進行計算得到一個新的二進制補碼。
<< 表示左移操作,可以把一個補碼向左移動指定的位數。
如果移動後沒有丟失有效信息則新數據是原有數據的 2 的 n 次方倍。
>> 表示右移操作,可以把一個補碼向右移動制定的位數。如果被移動的數字是無符號數則左邊補充 0,否則左邊補充符號位。
如果移動後沒有丟失有效信息則原數據是新數據的 2 的 n 次方倍。
6. 分別寫出 bool, int, float, 指針類型的變量 a 與 “零” 的比較語句。
bool :
if ( !a ) or if(a)
int :
if ( a == 0)
float :
const float EXP = 0.000001 // 定義一個精度,詳見下面分析;
if ( a <= EXP && a >= -EXP) // 在這個精度範圍內,就認爲是 0;
pointer :
if ( a != NULL) or if(a == NULL)
分析:說明 EXP 是一個精度類型,計算機中數據以二進制存儲,將浮點數的零轉爲二進制存儲是有誤差的;
所以,在精度範圍內,我們就認爲是零;這樣的話,就不能直接用等於或者不等於了,而需要用一個範圍來表示;
signed short int 有符號短整型,簡寫:short/int,字長 2 字節(16 位),範圍:-32768~32767(也有的計算機裏面,int 是 4 位)
signed long int 有符號長整型,簡寫:long,字長 4 字節 ;
unsigned short int 無符號短整型,簡寫 unsigned int,2 字節,範圍:0~65535;
unsigned long int 無符號長整型,簡寫 unsigned long,4 字節。
size_t 無符號整型,在不同編譯器上都是 4 字節,代替 unsigned int
2. 浮點型 float
float 單精度浮點數,字長 4 字節
double 雙精度,8 字節
3. 字符型 char
字長 1 字節
字符串聲明:char ss[20];
4. 隱式類型轉換會把佔地小的數據轉換成佔地大的數據,如果數據大小一樣會把有符號的數據轉換成無符號的數據。
5. C 語言中支持如下邏輯操作符(==, !=, >, >=, <, <=, &&, || )
&& 都爲真才爲真;
|| 有一個爲真即爲真;
&& 和 || 具有短路特性
! 也是一個邏輯操作符,可以對一個邏輯表達式的結果求反。
數學操作符優先級高於邏輯操作符
& 表示按位與,可以對兩個二進制補碼進行計算得到一個新的二進制補碼。它可以把某個補碼中特定的位置清 0。
| 表示按位或,可以對兩個二進制補碼進行計算得到一個新的二進制補碼。它可以把某個補碼中特定的位置設置成 1。
^ 表示按位亦或。它可以把某個已知的補碼中特定位置變成相反數字。
~ 表示按位求反,可以對一個二進制補碼進行計算得到一個新的二進制補碼。
<< 表示左移操作,可以把一個補碼向左移動指定的位數。
如果移動後沒有丟失有效信息則新數據是原有數據的 2 的 n 次方倍。
>> 表示右移操作,可以把一個補碼向右移動制定的位數。如果被移動的數字是無符號數則左邊補充 0,否則左邊補充符號位。
如果移動後沒有丟失有效信息則原數據是新數據的 2 的 n 次方倍。
6. 分別寫出 bool, int, float, 指針類型的變量 a 與 “零” 的比較語句。
bool :
if ( !a ) or if(a)
int :
if ( a == 0)
float :
const float EXP = 0.000001 // 定義一個精度,詳見下面分析;
if ( a <= EXP && a >= -EXP) // 在這個精度範圍內,就認爲是 0;
pointer :
if ( a != NULL) or if(a == NULL)
分析:說明 EXP 是一個精度類型,計算機中數據以二進制存儲,將浮點數的零轉爲二進制存儲是有誤差的;
所以,在精度範圍內,我們就認爲是零;這樣的話,就不能直接用等於或者不等於了,而需要用一個範圍來表示;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.