c的資料型別詳解與邏輯運算

2021-09-24 16:13:10 字數 2032 閱讀 5807

資料型別

所佔位元組

範圍char

1位元組-128 ———127

short

2位元組-32768——32767

int取決於編譯器

long

取決於編譯器

long long

8位元組那麼問題來了,如何表示負數呢?

乙個新概念:補碼

二進位制補碼較為常見,簡單來說,正整數的補碼就是它本身的二進位制,負整數的補碼則為與之將相應的正整數的二進位制中1與0相互交換

比如:-1的補碼就是1111 1111,

數的範圍

1個位元組=8位,

unsigned:在整數型別前加上unsigned可以把該型別變成不帶符號的整數,

若乙個變數想表示自己是unsigned可以在後面加上u或者u

整數越界:在我們的單個整數型別當中,可以將他的範圍理解為乙個圓圈,當乙個數走到127時,它再做加1的話它的值就變成-128。如下圖:

其他資料型別同理,此處以char為例。。。。

整數的輸入與輸出

資料型別 / 進製

輸入與輸出

int%d

unsigned

%ulong long

%ldunsigned long long

%lu8進製

%o16進製制

%x在這麼多資料型別選哪個好呢?

沒有特殊需要,就選擇int

在整數型別當中,還有乙個特殊的型別——char

char —— 字元型別

用單引號表示,例:char c =『1』;這裡的變數c表示乙個字元1

輸入與輸出都是%c

逃逸字元:

字元意義

字元意義

\b回退一格

\ "雙引號

\t到下乙個**位

\ 』單引號

\n換行

\ \反斜槓本身

\r回車

型別字長

有效數字

float327

double

6415

輸出精度

浮點數用%f輸出,而在%後面加上 .數字 表示輸出小數點後多少位;

printf("%.5f",0.00458);

printf("%.10f",0.00458);

printf("%.20f",0.00458);

看下輸出結果

超出範圍的浮點數

printf輸出inf表示該數超出範圍

printf輸出nan表示該數不存在

在這麼多資料型別選哪個好呢?

沒有特殊需要,就選擇double

bool

使用該型別時,要先定義乙個 #include

sizeof()

給出某個變數或型別在記憶體當中佔據的位元組,sizeof是靜態運算子。在括號內部不做計算

例如:printf(「sizeof(int)=%d」,sizeof(int)); 其他資料型別同理

1,自動資料型別轉換

當倆個資料型別不相同時,會自動轉換為較大的型別

char >> short >> int >>long >>long long

int >> float >>double

對於printf輸出而言,任何比int小的資料型別都會轉換為int

同理 float都會轉換為double

而scanf輸入不會,要輸入short型別,需要%hd

2,強制資料型別轉換

資料型別)值

例 printf("%d",(int)105.5); 會輸出 105

其他資料型別同理。。。。

名稱符號非!

或倆條豎線且&&

賦值運算,邏輯運算子,引用資料型別

總結 1.賦值運算 a 2 a a 2 a 2 a a 2 a 2 a a 2 如果a 2那麼a 2 0 乙個 是右邊的值賦給左邊的變數 兩個 這個是判斷 2.int a 3 int b 4 system.out.pringtln a b 輸出的結果是4 因為這是個賦值 system.out.pri...

C語言 邏輯運算與if語句

關係運算子 在c語言中0代表false,非0代表真 1.小於 2.小於等於 3.大於 4.大於等於 5.等於 6.不等於 關係運算子優先順序 前四種相同,後兩種相同,前四種高於後兩種優先順序 邏輯運算子 1.與 號兩邊都為真最後的結果才為true,否則為false。2.或 號兩邊有乙個位true,則...

C語言邏輯運算子詳解

情景模式 現在研發出了一款新的軟體,要求使用者必須成年,並且成績大於等於60,該怎麼辦呢?或許你會想到使用巢狀的 if 語句,類似下面這樣的 include intmain else else return0 這種方法雖然能夠行得通,但不夠簡潔和專業,我們可以將其壓縮為一條 if else 語句 i...