C語言基礎

2021-08-26 02:54:38 字數 3136 閱讀 3169

1.1  算術運算子:+    -    *     /    %   ++    --

其中,前三種就是很平常的加減乘,"/" 表示的是取整,'%'表示的是取餘 ,例如:

12/7 = 1,這裡只取整數部分

12% 7 = 5,這裡是等於餘數部分

"++"是自增1運算子,其功能是使變數的值自增1;

"--"是自減1運算子,其功能是使變數值自減1。

自增1,自減1運算子均為單目運算,都具有右結合性。可有以下幾種形式:

(1)   ++i:i 自增1後  再參與其它運算。

(2)   --i:  i 自減1後  再參與其它運算。

(3)   i++:i 參與運算後,i的值再自增1。

(4)   i--:  i 參與運算後,i的值再自減1。

如:int x,y;

x=10;  y=x++;   //結果y=x=10, 然後  x=x+1=11

x=10; y=++x;    //結果 x=x+1=11,然後 y=x=11

同理,x=10;  y=x--;   //結果y=x=10, 然後  x=x-1=9

x=10; y=--x;    //結果 x=x-1=9,然後 y=x=9

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

"||"表示或,(條件1)||(條件2),只要滿足其中乙個條件即可,當然,這裡需要注意的是:如果條件1已經滿足了,那麼計算機是不會去判斷後面的條件2的;

"&&"表示與,(條件1)&&(條件2),需要兩個條件同時滿足。與上面相似的是,如果第乙個條件不成立,計算機是不會執行第二個條件的。

1.3  位運算子:>>       <<        &      |      ~

這裡需要注意的是:遇到位運算子首先把數轉換成二進位制

例如:a=16>>2,表示將16右移2位,轉換為二進位制:0001 0000 >> 0000 0100 = 4,即為將1往右移動兩位,還有一種演算法是16/(2^2)=4;

a=16<<2,表示將16左移2位,轉換為二進位制:0001 0000 <<  0100 0000 = 64,即為將1往左移動兩位,還有一種演算法是16*(2^2)=64;

總之,左移就是乘以2的移動位數的平方,右移就是除以2的移動位數的平方。

而對於 & 和 | 則主要是用於將某位數快速置1或0,比如說:

將34的第5位置為1,首先將其轉化為二進位制,再通過 | 運算,有1的就合併;

34 = 2^5 + 2^1 = 0010 0010 | 0001 0000 = 0011 0010

將34的第2位置為0,首先將其轉化為二進位制,再通過 & 運算,只有都為1才為真;

34 = 2^5 + 2^1 = 0010 0010 & 1111 1101 = 0010 0000

1.4  賦值運算子: =

1.5  比較運算子: >      <      >=     <=     ==      !=

1.6  特殊運算子: sizeof()

計算物件所佔的位元組數

1.7  逗號運算子: 只取最後乙個表示式的值

例如:a=3,b=5,c=6

若a = ( a + b,a = a + b, c + b ),那麼a應該等於11;

若a = ( a + b,b = a + b, c + b ),那麼a應該等於14,因為此時的b等於8。

1.8  三目運算子:(表示式1)?(表示式2):(表示式3)

如果滿足表示式1,那麼就取表示式2,反之,則取表示式3

舉個簡單的例子:a=3,b=5,(a>b)? c=0:c=1,很明顯,a>b是不成立的,所以應該取c=1。

資料型別(所佔位元組數):  int       char      float       double       short

32位作業系統                         4          1           4             8                2

16位作業系統                         2          1           4             4                1     

其中,值得注意的是char的有無符號宣告

如果是無符號的unsigned char取值範圍:0000 0000 ~ 1111 1111 = 0 ~ 255

如果是有符號的char 取值範圍是:-128~127,因為第一位是符號位,用0、1表示正負

舉個例子:

signed int a = -16;

unsigned int b = 5;

if ( a + b > 0 ) else

在這個例子中,最終的結果是輸出hello,為什麼呢?這是因為有符號的數和無符號的數相加會轉換成無符號的數,所以a會轉換成乙個正數。同理的是,高精度和低精度相加,會轉換成高精度。

3.1  常量:在程式執行期間值不會發生改變的整型常量:0~9     

3.2  字元常量:'a' ~'z'  

3.3  字串常量(末尾預設有乙個『\0』):「hello」

3.4  浮點型(實型):3.14

3.5  指數型常量:(次方如果為負,轉化之後需減;若為正,轉換之後需加)

3.14*10^-5 = 3.14e-5

9.56*10^9 = 9.56e+5

3.6  識別符號常量:巨集定義

3.7  識別符號:自定義的由字母、下劃線、數字組成。首字母只能是字母或下劃線。不能和關鍵字重名。

scanf("%d",&a);//從鍵盤上獲取值%d    %c   %s    %f

printf("%d\n",a);

printf("%3d\n",a);

%c: 字元型

%s: 字串

%p: 輸出位址

%f: 浮點型

%lf: 雙精度

c 語言基礎

三個訪問描述符 public private 和protected 都可以修飾類的資料成員和成員函式 public 可以可以被任何訪問,private 只能被該類的公,私成員函式,該類的友元函式或者友元類的成員函式訪問。protected 只能被該類的公,私成員函式和該類的派生類訪問。c 中除了,和...

c語言基礎

1.問題描述 從鍵盤輸入三個整數,分別存入x,y,z三個整型變數中,計算並輸出三個數的和以及平均值。輸入形式 從鍵盤輸入三個整數,整數之間以空格隔開。輸出形式 在螢幕上分兩行顯示結果 第一行為三個數的和,整數形式輸出 第二行為三個數的平均值,浮點數形式輸出,小數點後保留兩位小數。輸入樣例 3 2 3...

C語言基礎

找最大最小整數 2.問題描述 編寫乙個程式,使用者輸入若干整數,試找出其中的最大數和最小數。輸入形式 使用者在第一行待輸入資料個數,在第二行輸入資料。輸出形式 程式在下一行輸出資料的最大值和最小值 樣例輸入 589 62 96 74 52 樣例輸出 96 52 樣例說明 使用者第一次輸入的為資料個數...