C語言相關(二)

2021-08-15 16:09:52 字數 3055 閱讀 5794

資料以程式執行期間是否改變或被賦值分為變數常量。

以計算機中的儲存方式分為兩大基本型別整數型別浮點數型別,字元布林型別也被包括於整數型別。

基本型別關鍵字:

c90之前:int    short    long    unsigned    char    float    double

c90新增:signed    void(空型別)

c99新增:_bool(布林型別)_complex(複數型別)_imaginary(虛數型別)

位元組

描述計算機儲存單元的術語。

位 (bit):最小儲存單元,儲存0或1(用於設定開關),計算機記憶體基本構建塊。

位元組 (byte):1位元組為8位(幾乎所有機器),2^8種組合表示0~255間整數或一組字元。

字 (word):隨計算機被設計時給定自然儲存單位改變,從最初的1字長8位到目前的64位。

關鍵字所佔記憶體(位元組):

intshortlongcharfloatdouble

32位42

4148

64位42

81

48   

64位機下經**測試.

除long之外,其它型別在32與64位機下所佔位元組數相同。

此外unsigned short、unsigned int、unsigned long與short、int、long相同,

32位下long double佔12位元組,64位下long double佔16位元組,有效位都為10位元組。

基本運算子:= 、+ 、- 、* 、/   (c沒有指數運算子但庫中函式可用於指數運算)

邏輯運算子:&& 、|| 、!

其它運算子:% 、++ 、-- 、sizeof 

1.賦值運算子=:  賦值語句由右向左,右側為常量(右值)或變數或表示式

左側為可修改的左值(標識特定資料物件的名稱或表示式);

c中也可以多重賦值;(a=b=c=5;)

2.加減運算子+-:運算物件可以是變數、常量、表示式(屬於右值);二元運算子;

3.符號運算子+-:改變值的代數符號;

4.乘除運算子*/:整數除法結果(除不盡)中的小數部分被捨棄,稱為截斷,

兩運算物件中任一元為浮點數(或強制型別轉換)則不會出現截斷;

除數為0時則程式會出現警告與異常;

整型接收int/int結果以整型輸出為截斷結果;以浮點型輸出為0的浮點型格式;

浮點型接收int/int結果以整型輸出為0;以浮點型輸出為截斷結果的浮點型格式;(根據結果找**bug)

5.邏輯&&||!: 應注意使用方法

邏輯與&&兩邊各為能判斷出真值的表示式,且判斷後面的表示式的前提為前方表示式(或變數)真值為非0

部分情況下也可用於化簡迴圈語句中的判斷條件。同理邏輯或 || 在前面條件為0的情況下編譯器直接跳過後                           面表示式判斷

邏輯非 !的使用則要根據物件的不同帶上括號防止語法錯誤。

6.自增自減++--:使用時根據是否在一條完整的語句中判斷先後自增或自減,忌同一條語句中多次使用

7.按位運算子:  按位與&、按位或 |、按位取反

~、按位異或^:作

用與邏輯運算子類似,物件為

二進位制。

8.左移右移運算子:左移

<<

、右移》

應用:(函式體部分)

①判斷奇偶: return (x

&1);   (奇數返回1,偶數返回0)

同理x%4:return (x

&2);②整數平均值:return (x

&y)+

((x^

y)>>

1);

③整數是否為2的冪:return((

x&(x

-1))

==0)&&

(x!=0

); ④不使用中間變數交換兩數值: x^=

y; y^=

x; x^=

y;也可以:x

= x+y - x; y

=x+y - x

;⑤求絕對值: y=x

>>

31;

return(x

^y)-

y;⑥取模、乘除也可以轉化為位運算。

ps:部分內容引自《c primer plus》。

《C語言筆記 指標相關 二 》

指標型別決定了指標如何參與運算 1,指標參與運算時,因為指標變數本身儲存的數值是表示位址的,所以運算也就是位址的運算。2,指標參與運算的特點是,指標變數加1並不是真的加1,而是加1 sizeof 指標型別 如果是int 指標,則加1實際上就是表示位址 4 位址 sizeof int 如果是char ...

C語言相關演算法

給出年,月,日,計算改日是該年的第幾天 include void main scanf d d d year,month,day int d,i d day if year 4 0 year 100 0 year 400 0 for i 0 i printf d n d include define...

C語言相關知識

在linux系統之中,eof根本不是乙個字元,而是當系統讀取到檔案結尾,所返回的乙個訊號值 也就是 1 linux中,在新的一行的開頭,按下ctrl d,就代表eof 如果在一行的中間按下ctrl d,則表示輸出 標準輸入 的快取區,所以這時必須按兩次ctrl d windows中,ctrl z表示...