日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言基础语法2

發布時間:2024/4/24 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言基础语法2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
類型轉換:
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语言基础语法2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。