延續上作,本篇博客帶大家繼續入門C語言
- 運算子
- C語言三大結構
- 順序結構
- 選擇結構
- 回圈陳述句
運算子
C語言為我們提供了很多的運算子,有單目運算子,雙目運算子和三目運算子,這里的一目二目三目指的是操作的物件個數,我們可以使用這些運算子來解決一些實際的問題,接下來就一一認識一下吧:
賦值運算子:‘=’就是賦值運算子,是雙目運算子,可以使用它對變數進行賦初值,例如:

我們在上面的代碼中分別對a,b,c賦了初值,在后面我們使用到它們的時候它們的值就是我們賦給他們的,這就是賦值運算子,
算術運算子:‘+’ ,‘ -’,‘*’,“/”,“%”,這些都是雙目運算子,/是除法,%是取模(余數),這些運算子想必大家是很熟悉的,數學中經常用到,在這里我想多說的是C語言只會進行加法運算,所謂的減法其實是加負數,
這里還有兩個大家不熟悉的算術運算子‘++’和‘- -’(這里的減減中間是沒有空格的,因為編譯器的問題我加了一個空格以讓大家看清),這兩個運算子是自增和自減的意思,要注意它們放的位置不同,效果不同,上代碼:


可以看到我們對a賦初值為0,在輸出的時候應該是a++,應該是++a,可以看到結果是不同的,
++在變數的前面,是先對變數的值加1,再使用變數,如果是在后面,先使用變數的值,再對變數進行加一操作,

現在應該清楚了吧,
關系運算子:
“>”,"<=",">=","==","<","!=",雙目運算子,關系運算子的含義很簡單,它是用于兩個值的比較,回傳的值只有兩個,關系成立回傳真,關系不成立回傳假,真值是1,假值是0,上代碼:


兩次的代碼不一樣之處就是b和c的值相不相等,==是判斷左右兩邊的值是否相等的運算子,我們將其結果存放到a中去,可以看到b與c相等時a=1,不相等時a=0,所以說關系運算子只會回傳1/0;
這里我想多說一些,一定要區分==和=,它們是完全不一樣的運算子,前者起的是判斷作用,后者則是賦值,如果使用錯誤會造成不可預期的錯誤,所以一定不要記混了,即使是一些經驗豐富的程式員有時候也會反這種錯誤,
邏輯運算子:
“&&”,“||”,“!”,這三個叫邏輯運算子,它們會根據運算式的真偽回傳真值或者假值,是不是和上面的關系運算子有點類似?不同的是這里的真是非0值(等價1),假依然是0.
“&&”:雙目運算子,邏輯與,兩邊都為真的時候回傳真,有任何一方為假就回傳假,

a為假,所以回傳0.
“ ||” :雙目運算子,邏輯或,只要有一邊為真就回傳真,否則回傳假,
“ !”:單目運算子,邏輯非,就是把真變成假,把假變成真
位邏輯運算子:
“&”,“|”, “^” , " ~"
“&”:按位與,雙目運算子,相同為1,不同為0,
“|”:按位或,雙目運算子,有1為1,無1為0,
“^”:按位異或,雙目運算子,相同為0,相異為1,
“ ~ ”:按位取反,單目運算子,將1變成0,0變成1,
要注意這里的按位的意思是按照二進制的補碼進行,這也就意味著這些運算子不能對小數使用,不清楚補碼的小伙伴快去補知識啦,
移位運算子:和上面的一樣,也是對二進制補碼進行
“<<” :左移運算子,將二進制補碼左移一位,在最低位補0;
例如:將0001左移一位得到的是0010,
“>>”:右移運算子,將二進制補碼右移一位,最高位補原來的最高位(符號位)
例如:將1000右移一位得到1100,
復合賦值運算子:其實是一種縮寫
"+= " "-= " " * = " "/= " " %= " "&= " "|= " "~= " “^=”
a+=b其實就是a=a+b;其他的運算子都是一樣的,
優先級:非常重要的一個概念,運算子的優先級會決定運算順序,就好比乘除要比加減先算,以下是運算子優先級表,每一本C語言的入門書都會有這張表:

這里建議大家直接上手操作,多練,
C語言三大結構
所有的C語言程式都是由這三種結構組成的,可見這三大結構的重要性,
順序結構
順序結構是最簡單的了,它就是說C語言的每條陳述句都是自上而下執行的,不會無緣無故地跳過某個陳述句,也不會無緣無故的重復執行某條陳述句,從前面的代碼中可以看出,在基礎一中的最簡單程式中只列印了一個Hello world,沒有重復列印,
選擇結構
選擇結構可以決定哪些陳述句執行,哪些陳述句不執行,
if陳述句
首先來看看if陳述句的基本形式

除了這種形式外還有如下:

但是僅僅上面的兩種形式是不夠用的,例如以下代碼;

這里我想通過輸入不同的a來輸出不同的值,但是當我輸入1的時候卻出現了問題,他竟然同時列印了haha和lala,通過分析我們也很容易找出問題,a=1的時候第一個if為真,執行輸出了haha,但是程式未結束,繼續向下,第二個if判斷為假,沒有執行hehe,但是else可就要執行了,于是輸出了lala,
為了解決這樣的問題,C語言的if陳述句還有一種形式:

多了一個else if(),就能夠解決上述的問題,a=1的時候if判斷為真,那么就會跳過后面的else if和else,從而避免了上述問題的發生,

假如我要在a大于10的時候輸出haha,再a大于0且小于10的時候輸出hehe,其他的時候輸出lala,那么我在寫第二個判斷的時候就不用寫成a>0&&a<10了因為當if判斷為假的時候a必然是小于10的,這樣就不用重復書寫了,
switch陳述句:C語言選擇陳述句的另外一種,
基本形式如下:

注意switch后面的變數必須是整形,可以是整形運算式,char也可以,每條陳述句后都有一個break,可以在執行完陳述句后跳出選擇陳述句,不會執行下面的陳述句,如果沒有了break,那么下面的代碼會出現這樣的問題


這里令a=‘\0’字符,\0對應的阿斯克碼值是0.所以列印了XXXXX,C語言的整形和字符是相通的,
回圈陳述句
回圈陳述句可以讓計算機重復的執行某些特定的陳述句,以完成較復雜的作業,
while回圈:

這是while回圈的基本寫法,括號內可以是運算式,變數名,數字等等,如果是數字的話要么回圈會一直進行,要么回圈不會進行,

這樣的代碼就不會死回圈,因為我們人為設定了進入回圈的條件,當a大于5的時候運算式就為假,就不會進入回圈了,當然我們也可以是使用break來跳出回圈,就像這樣,

for回圈:for回圈是使用比較頻繁的一種回圈,

for回圈的執行次序如下:
1:先執行對變數初始化的陳述句
2:判斷回圈條件是否滿足
3:若滿足則進入大括號執行陳述句塊/若不滿足則回圈結束
4:執行完陳述句塊后執行陳述句1.
上面的是第一次for回圈的執行步驟,下一次回圈的時候就不會執行對變數初始化的陳述句了,其他的還是一樣的,

這就是一個簡單的for回圈,當然我們也可以使用break來跳出回圈,
還有一種回圈叫do while回圈:

可以看到do while回圈有一個不同于while回圈和for回圈特點,那就是它在進行第一次回圈的時候并沒有判斷是否進行回圈的條件,所以do while回圈是一定會進行一次回圈的,第二次回圈是否進行則需要看回圈條件是否滿足,

這里要說所有的回圈和選擇結構都是可以互相嵌套使用的,比如再while里面使用if,都是可以的,
看得再多也不如上手寫上幾句代碼,C語言的三大結構是很重要的,多練,多想才能夠很好的掌握,讓我們一起加油,像大廠進發!!!
如有錯誤懇請讀者斧正,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/273338.html
標籤:其他
上一篇:叫你別隨便重啟Redis!!!怎么樣,資料全丟了吧~~~
下一篇:【c語言】數列求和
