柚子快報邀請碼778899分享:c++ C語言操作符詳解
? ? ? ? 在上一篇文章中,小編為大家解析了C語言變量這一名詞,相信大家對變量已經(jīng)不陌生了,有了變量的基礎后,我們就可以開始學習C語言中的操作符了,我們對變量的操控就需要通過操作符來實現(xiàn),話不多說,讓我們開啟新一期的文章吧!
1.算術操作符
? ? ? ? 我們在寫代碼的時候,一定會涉及到計算;C語言為了方便運算提供了一系列的操作符,其中就有一組的操作符叫做算數(shù)操作符,他們分別是:+、-、*、/、%,這些操作符都是雙目操作符,在這里小編聲明一下,操作符也叫運算符,只不過是叫法不同,意思是一樣的。
1.1 + 和 -
? ? ? ? 相信讀者們大概能猜到 + 和 -?這兩個操作符是用來干啥的,沒錯,就是用來完成加法和減法的,+ 和 - 都有兩個操作數(shù),這兩個操作數(shù)都位于操作符的兩端,有兩個操作數(shù)的這種操作符我們也叫雙目操作符,下面小編就拿例子來說明:
#include
int main()
{
int x = 100 + 66;
int y = 30 - 9;
printf("%d \n", x);
printf("%d \n", y);
return 0;
}
上述代碼運行結果
1.2 *?
? ? ? ? * 是用來完成乘法的,這里小編要提醒大家的是,這個與指針中的解引用符號?*?要區(qū)分一下,指針中的解引用是單目操作符,只有一個操作數(shù),而乘法 *?是雙目操作符,關于解引用這個操作符小編會在深入理解指針這一篇文章中為大家詳細講解?,F(xiàn)在小編還是一樣使用代碼給大家舉例:
#include
int main()
{
int mul = 30;
printf("%d \n", mul * mul);
return 0;
}
上述代碼運行結果
1.3 /?
? ? ? ? / 是用來完成除法運算的,但是要注意的是如果?/ 兩端的數(shù)是整數(shù)的話,得到的結果也是整數(shù),附上代碼說明:
#include
int main()
{
float div1 = 6 / 4;
int div2 = 6 / 4;
printf("%f\n", div1);
printf("%d\n", div2);
return 0;
}
上述代碼運行結果
? ? ? ? 我們可以發(fā)現(xiàn),div1這個變量的數(shù)據(jù)類型雖然是浮點型的,但是 6 / 4 的結果是1.000000 而不是1.5。原因就是C語言中整數(shù)除法是整除,只會返回整數(shù)部分,丟棄小數(shù)部分。從這里我們也可以發(fā)現(xiàn),商的結果與被除數(shù)和除數(shù)數(shù)據(jù)類型無太多差異,接下來我們就來學習一下如何讓C語言進行浮點數(shù)除法(小數(shù)除法)。
? ? ? ? 如果希望得到浮點數(shù)的結果,兩個操作數(shù)中必須有一個是浮點數(shù),這時候C語言才會進行浮點數(shù)除法,下面附上代碼供讀者們參考:
#include
int main()
{
float x = 6 / 4.0;//或者寫成6.0 / 4
printf("%f\n", x);
return 0;
}
上述代碼運行結果
? ? ? ? ?上述示例中,我們將除法的一個操作數(shù)改變成了浮點數(shù),C語言執(zhí)行了整數(shù)除法,得到的結果就是1.5。
? ? ? ? 到這里小編相信大家已經(jīng)知道C語言的兩種除法形式,接下來小編給讀者一道例題:請讀者口述下面的代碼中score為多少?
#include
int main()
{
int score = 5;
score = (score / 20) * 100;
return 0;
}
????????上面的代碼,你可能覺得經(jīng)過運算,score 會等于 25,但是實際上?score 等于0 。這是因為 score / 20 是整除,會得到?個整數(shù)值 0,所以乘以 100 后得到的也是 0 。
上述代碼調(diào)試結果
? ? ? ? 為了想要得到預想的結果,我們需要將20改成20.00,讓C語言執(zhí)行浮點數(shù)除法,下面附上一段代碼供讀者參考:
#include
int main()
{
int score = 5;
score = (score / 20.00) * 100;//將20改成20.00
return 0;
}
上述代碼調(diào)試結果
? ? ? ? ?可以通過對內(nèi)存的觀察發(fā)現(xiàn),將20改成20.00后,C語言執(zhí)行的是浮點數(shù)除法,score的結果與我們預想的一樣。
1.4 %
? ? ? ? 相信大家平時經(jīng)常接觸到 %?,但是C語言中的 %?是取模的意思,我們可以通過它進行求余(模)運算,即返回兩個整數(shù)相除的余數(shù);要注意的一個點就是,這個運算符只能運用于整數(shù),不能用浮點數(shù),下面給大家附上代碼說明取模運算符的使用方法:
#include
int main()
{
int x = 6 % 4;
return 0;
}
上述代碼調(diào)試結果
? ? ? ? 6 除 4 的余數(shù)為1 余 2 ,這與我們調(diào)試的結果一樣。
? ? ? ? 剛剛給讀者們介紹的都是整數(shù)的取模運算,那負數(shù)的取模運算呢?請讀者們牢記一個點,負數(shù)的求模規(guī)則是:結果的正負號由第一個操作數(shù)的正負號決定,下面給大家舉個例子:
#include
int main()
{
printf("%d\n", 11 % -5);
printf("%d\n",-11 % -5);
printf("%d\n",-11 % 5);
return 0;
}
上述代碼運行結果
? ? ? ? 我們從結果就可以觀察出,取模結果的正負號是由第一個操作數(shù)(11 或 -11)決定的。
2.賦值操作符
2.1 =
? ? ? ? 上一篇文章中小編有說過,在變量創(chuàng)建的時候給一個初始值叫做初始化。在變量創(chuàng)建好后,再給一個值,這就叫做賦值。
int num = 100;//初始化
num = 300;//賦值
=?是一個賦值操作符,這是一個隨時隨地可以給變量賦值的操作符。
2.1.1?連續(xù)賦值
? ? ? ? 賦值操作符 = 也可以連續(xù)賦值:
int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//連續(xù)賦值,從右向左依次賦值
? ? ? ? 小編要提醒大家的一點是,C語言雖然支撐這種連續(xù)賦值,但是這種代碼不便于理解,建議將他們拆開來寫,這樣方便觀察代碼執(zhí)行的細節(jié)。我們可以將上述代碼的連續(xù)賦值拆開寫成:
int a = 3;
int b = 5;
int c = 0;
b = a+3;
c = b;
? ? ? ? 這樣寫的話,在調(diào)試的時候我們就可以很清晰的觀察每一次賦值的細節(jié)。
2.2 復合賦值符
? ? ? ? 也許有讀者會納悶我們都已經(jīng)有了一個賦值操作符?= 了,為什么還需要一個賦值操作符呢??那是因為這樣會使得代碼更加簡潔,寫的代碼能夠更加方便,下面小編用代碼給大家展示兩種寫法的不同差異:
int num = 30;
num = num + 7;
num = num - 6;
int num = 30;
num += 7;
num -= 6;
? ? ? ? 第二個代碼塊中的代碼就使用了賦值操作符進行書寫,下面小編為大家列出C語言的賦值操作符有哪些:
+= -=
*= /= %=
>>= <<=
&= |= ^=
????????+= 和 -= 我們剛剛已經(jīng)講解過了,第二行的就是乘、除、取模的情況,因為第三行和第四行的操作符需要讀者們有一些計算機組成原理的知識,小編在操作符進階的章節(jié)會為大家深入講解;在操作符進階的章節(jié)小編也會為大家講解一些需要用到的計算機組成原理的知識,敬請期待。
3. 單目操作符
? ? ? ? 我們之前說到了雙目操作符有兩個操作數(shù),C語言中還有一些操作符只有一個操作數(shù),它們被稱為單目操作符。
3.1 ++ 和 --
? ? ? ? ++ 是一種可以讓變量進行自增的操作符,其分為前置++和后置++,-- 是一種可以讓變量進行自減的操作符,也分為前置--和后置--,下面小編還是一樣用代碼對其使用方法進行說明,這樣通俗易懂。
3.1.1 前置++
int a = 10;
int b = ++a;
printf("a=%d b=%d\n", a, b);
前置++用例執(zhí)行結果
? ? ? ? ++的操作數(shù)是a,是放在a的前面的,就是前置++,請各位讀者記住一句運算口訣,前置++:先+1后使用,a原來是10,先+1,后a變成了11,再使用就是賦值給b,b得到的也是11,所以計算結束后,a和b都是11。
3.1.2?后置++
int a = 10;
int b = a++;//與上一段代碼不一樣的是,后置++的++在a之后
printf("a=%d b=%d\n", a, b);
后置++用例執(zhí)行結果
?????????++的操作數(shù)是a,是放在a的后面的,就是后置++;后置++:先使用后+1,a原來是10,先使用,就是先賦值給b,b得到了10,然后再+1,然后a變成了11,所以計算結束后a是11,b是10。
3.1.3 前置 --
? ? ? ? 如果讀者們聽懂了前面的前置++,那前置--也是一個道理,只是將+1換成了-1;計算口訣是先-1,后使用。下面附上代碼說明:
int a = 10;
int b = --a;
printf("a=%d b=%d\n", a, b);
前置--用例執(zhí)行結果
3.1.4 后置--
? ? ? ? 后置--也是一個道理,只是將+1換成了-1;計算口訣是先使用,后-1。下面附上代碼說明:
int a = 10;
int b = a--;
printf("a=%d b=%d\n", a, b);
后置--用例執(zhí)行結果
?3.2 + 和 -
? ? ? ? 與算數(shù)操作符的?+?和 -?不同的是,單目操作符中的 + 是正號,- 是負號,這里強調(diào)一下,運算符 + 對正負值沒有影響,是一個可以完全省略的運算符,但是要寫上去也沒毛病。
int num = +55;
int num = 55;
? ? ? ? 這段代碼中將+55或者55賦給整型變量num,結果是沒有差別的。
? ? ? ? 而運算符 - 用來改變一個數(shù)值的正負號,在正數(shù)的前面加上一個 - 就會得到一個負數(shù),在負數(shù)的前面加上一個 - 就會得到正數(shù)。
#include
int main()
{
int num1 = 20;
int b1 = -num1;
int c1 = -20;
printf("b = %d c = %d \n", b1, c1);
int num2 = -20;
int b2 = -num2;
printf("b = %d \n", b2);
return 0;
}
上述代碼執(zhí)行結果
? ? ? ? 這個用例的執(zhí)行結果也說明了,在正數(shù)的前面加上一個 - 就會得到一個負數(shù),在負數(shù)的前面加上一個 - 就會得到正數(shù)。
4.結語
? ? ? ? 說到這里,也許有很多讀者從這篇文章中獲取了很多的知識,小編在這里想送給各位讀者一句話:把努力當成一種習慣,而不是三分鐘熱度。堅持才是王道,每一個你羨慕的收獲,都是別人努力用心拼來的。你可以抱怨,也可以無視,但記住,不努力,連輸?shù)馁Y格都沒有!
柚子快報邀請碼778899分享:c++ C語言操作符詳解
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。