型別轉換:
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 識別符號 常量 ...