C語言基礎語法2

2021-07-30 22:57:37 字數 3433 閱讀 7088

型別轉換:

1.自動轉換:

運算過程中,運算子兩邊型別不相同就會自動轉成較大的型別進行運算.

2.賦值轉換:

賦值運算的過程中產生的轉換,=號左右兩邊的型別不相同,則發生轉換.

char   int    float    double

char <-->int 

int --> char  4b -->1b

char型別只有乙個位元組,int有四個位元組,賦值時直接將int的記憶體的低乙個位元組截斷給char 變數;

char --> int 

將乙個位元組賦值給4個位元組,直接將char的8位複製給int的低8位,高24位採取補0或補1的方法.

有符號型別的最高位為1,則24位補1.其他情況都補0;這樣能保證資料變數.

int  <-->float 

float --> int 

直接將float的整數部分賦值為int變數,小數丟棄.要保證整數部分不能超出int的範圍.

int  a  = 3.14159;  //a = 3;

int  --> float 

資料不變,改變資料的儲存方式為float的方式.資料的精度可能會丟失。

float <-->double 

float --> double 

資料不變,改變資料的儲存方式.

double --> float 

資料盡量不變,改變資料儲存方式.可以直接將double的十進位制資料擷取前面7位有效資料給float變數.

如果資料過大,報溢位錯誤,inf

3.強制轉換:

按照開發者的需求進行指定的轉換.

轉換格式:

(目標型別)變數;

float a 2.5;

2+(int)a

運算子:

表示式:

運算子表:

優先順序結合性

1.老大

()、、

2.單目:

++、--自加 自減。

a = 5;

b = a++;  //先賦值後自加,b = a, a++ 之後b==5, a==6;

a = 5;

b = ++a;  //先++,後賦值  ++a, b=a   之後b==6,   a==6

int a = 5, b = 7, c;

c = a++ + b;  //12 期望值:a+期望得到另乙個+ 。

c = a++ + ++b; //13 

a = 5;

c = a++ + a++ + a++;

sizeof()  倫家是運算子,不是函式,求型別或變數占用記憶體大小

int a = 668;

sizeof(int) ==> 4; //int在記憶體中的大小為4個位元組

sizeof (a) ==>  4; //a在記憶體中占用4個位元組

3.算術

*   乘法

/   (除法或取整) 除法兩邊都是整數,則進行取整運算. 否則進行除法運算

5/2 ==> 2   2/5 ==> 0

5/2.0   ==> 2.500000

1.0*7/2 ==> 3.500000

7/2*1.0 ==> 3.000000 

% 求餘/求模運算 (左右運算元必須為整數)

5%2 ==> 1 

3%5 ==> 3+-

4.位移運算 --(位操作是對記憶體的直接操作)

<<

char a = 0x1;

b = a<<1; 表示將a中的資料左移一位後給b,後邊補0,最高位丟棄.

左移n位,相當於乘以2的n次方(資料不丟失)

>>

char a = 0x60;

b = a>>1 表示將a 中的資料右移一位後給b,左側補0,最低位丟棄.

右移相當於除以2(資料位不可丟失)

char a = -4;

b = a>>1; 表示將a中的補碼資料右移一位後給b,左側補1(算術右移),最低位丟棄.

ps:有符號型別的最高位為1; 

5.關係運算

關運算的結果是乙個邏輯值,表示判斷結果的真假,0為假,1為真,非零即真 

<  >  <=  >= 

a = 5>6 ;假,a = 0;

a = 6>5; 真,a = 1;

==  !=  

6.位運算

&  |  ^ 

位&: 按位與,兩者都為1,則結果為1

x & 1  ==>x 不變

x & 0  ==>0 清零

位或|:按位或,兩者都為0,則結果為0

x | 1 ==>1  置一

x | 0 ==>x  不變

異或^:按位異或,兩者不同,則結果為1;

x ^ 1 ==>~x 取反

x ^ 0 ==>x  不變

交換兩個數:

int a = 5, b = 7;

a = a^b;

b = a^b;

a = a^b;

7.邏輯運算

結果為真假值

&& 邏輯與   

表示式1 && 表示式2  表示式1和表示式2都為真則為真.

短路現象:

表示式1為假,則整個表示式為假,不會判斷表示式2

(表示式1)+(表示式2) ://表示式1和2的運算子都是+,等級相同,沒有先後順序,由編譯器決定

(表示式1)&&(表示式2)://對於&&,存在求值順序,即先計算表示式1。

||  邏輯或 

表示式1 || 表示式2   表示式1或表示式2只要有乙個為真則為真.

0 ||  1   1 

1 ||  0   1 

0 ||  0   0 

1 ||  1   1 

短路現象:

表示式1 || 表示式2 表示式1為假才繼續判斷表示式2 

!   邏輯非

!(表示式)   真變假,假變真

優先順序表:

優先順序:

是為了解決 不同運算子 之間的資源歸屬問題,變數總是和優先順序高的結合成乙個整體;

a + b * c //b和*結合成b*c構成乙個整體==> a + (b*c)

結合性:

是為了解決 相同運算子之間的資源歸屬問題.

a = 1, b = 2, c = 3;

a = b = c;//=結合性自右向左,b屬於右邊的等於號,構成乙個整體.

a+b+c;

(a+b)+c; 

求值順序:

解決單個運算子運算時,左右表示式執行先後順序的.(一下三個運算子是有求值順序的:

&&, ||, a?b:c)

(表示式1) && (表示式2); //求值順序決定了表示式1先算.

a?b:c; //表示式a先算,然後再判斷執行b或則c

(表示式1) + (表示式2); //表示式1和表示式2,先後順序不確定.

預習:條件運算子

輸入和輸出函式

C語言基礎 基礎語法

識別符號 識別符號就是變數的名字,函式的名字等都可以叫做識別符號。海風教育投訴 命名規則 1.開頭必須為字母,不得以數字或者下劃線開頭。2.識別符號只能以數字,下劃線字母組合。3.識別符號不准使用c的關鍵字。c基礎知識 1.每個程式有且只能有乙個main函式。2.每條語句以分號結束。3.所有的語句必...

C語言基礎語法

一 關鍵字 識別符號 注釋 1 關鍵字也叫保留字,是c語言中具有特殊含義的符號,共有32個 特點 全部小寫,有特殊顏色 c語言一共提供了32個關鍵字,這些關鍵字都被c語言賦予了特殊含義 auto double int struct break else long switch case enum r...

C語言基礎語法

在程式執行過程中,其值不發生改變的量稱為常量。常量分類 常量 說明直接常量 字面量 可以立即拿來用,無需任何說明的量,例如 符號常量 用識別符號代表乙個常量。在c語言中,可以用乙個識別符號來表示乙個常量,稱之為符號常量。說明 符號常量在使用之前必須先定義,其一般形式為 define 識別符號 常量 ...