目錄
前言
一、運(yùn)算符的概念與分類
二、算術(shù)運(yùn)算符
三、關(guān)系運(yùn)算符
?四、邏輯運(yùn)算符
五、賦值運(yùn)算符
六、運(yùn)算符的優(yōu)先級(jí)?
總結(jié)
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-723212.html
前言
本篇文章是對(duì)運(yùn)算符的具體講解。
一、運(yùn)算符的概念與分類
概念:
運(yùn)算符就是一種告訴編譯器執(zhí)行特定的數(shù)學(xué)或邏輯操作的符號(hào),用來(lái)表示針對(duì)數(shù)據(jù)的特定操作,也稱之為操作符。在計(jì)算機(jī)編程中,運(yùn)算符用于操作數(shù)據(jù),執(zhí)行各種數(shù)學(xué)和邏輯運(yùn)算,并產(chǎn)生結(jié)果。
分類:
1.根據(jù)分類對(duì)象的多少可以分為單目運(yùn)算符(又名一元運(yùn)算符)、雙目操作符(又名二元操作符)、三目操作符(又名三元操作符)。
2.根據(jù)運(yùn)算作用不同又可以分為:算術(shù)操作符、關(guān)系操作符、邏輯操作符、位運(yùn)算符、賦值運(yùn)算符、雜項(xiàng)操作符等。
二、算術(shù)運(yùn)算符
含義:
算術(shù)運(yùn)算符是對(duì)數(shù)值類型變量進(jìn)行運(yùn)算的,屬于上述的雙目操作符,結(jié)合性是從左到右的,算術(shù)優(yōu)先級(jí)就是我們所知的?“ * 、/ 、% ”>“ +、 -”。
運(yùn)算符 | 描述 | 實(shí)例 |
---|---|---|
+ | 把兩個(gè)操作數(shù)相加 | x+y得到15 |
-? | 第一個(gè)操作數(shù)減去第二個(gè)操作數(shù) | x-y得到5 |
* | 把兩個(gè)操作數(shù)相乘? | x*y得到50 |
/? | 把兩個(gè)操作數(shù)相除 | x/y得到2 |
% | 取模,結(jié)果為整除后的余數(shù) | x%y得到0 |
++ | 自增運(yùn)算符,整數(shù)值加一 | x++得到11 |
-- | 自減運(yùn)算符,整數(shù)值減一 | x--得到9 |
需要注意的是:
a++(a--) 與 ++a(--a)的區(qū)別,前者為先賦值后運(yùn)算,后者為先運(yùn)算后賦值。當(dāng)其作為一個(gè)獨(dú)立的語(yǔ)言使用時(shí),是等價(jià)的。但是當(dāng)它出現(xiàn)在語(yǔ)句中就會(huì)有所不同。
下面通過(guò)一個(gè)實(shí)例代碼來(lái)幫助大家更好的理解:
#include <stdio.h>
int main()
{
int y;
int x = 10;
y = x++;
printf("先賦值后運(yùn)算:\n");
printf("y 的值是 %d\n", y );
printf("x 的值是 %d\n", x );
x = 10;
y = x--;
printf("y 的值是 %d\n", y );
printf("x 的值是 %d\n", x );
printf("先運(yùn)算后賦值:\n");
x = 10;
y = ++x;
printf("y 的值是 %d\n", y );
printf("x 的值是 %d\n", x );
a = 10;
c = --a;
printf("y 的值是 %d\n", y );
printf("x 的值是 %d\n", x );
return 0;
}
程序運(yùn)行的結(jié)果如下:
?? ??? ?
?? ?? ?
? ?? ?
?? ? ?
? ? ?
?? ? ?
?? ?? ?
?? ?? ? ?
三、關(guān)系運(yùn)算符
含義:
關(guān)系運(yùn)算符的值只能是0或1。當(dāng)運(yùn)算符的值為真時(shí),結(jié)果值都為1;反之,都為0;關(guān)系運(yùn)算符也屬于雙目運(yùn)算符,結(jié)合性為從左到右,優(yōu)先級(jí)為“ > 、 < 、 >= 、 <=? ”? >? " == 、 !=? "。
運(yùn)算符? | 描述 | 實(shí)例 |
---|---|---|
== | 檢查倆個(gè)操作數(shù)的值是否相等,如果相等則為真? | x==y為假 |
!= | 檢查倆個(gè)操作數(shù)的值是否相等,如果不相等則為真 | x!=y為真 |
> | 檢查左操作數(shù)是否大于右操作數(shù),如果符合則為真? | x>y為真 |
< | 檢查左操作數(shù)是否小于右操作數(shù),如果符合則為真 | x<y為假 |
>=?? | 檢查左操作數(shù)是否大于等于右操作數(shù),如果符合則為真 | x>=y為真 |
<= | 檢查左操作數(shù)是否小于等于右操作數(shù),如果符合則為真 | x<=y為假 |
下面通過(guò)一個(gè)實(shí)例代碼來(lái)幫助大家更好的理解:
#include <stdio.h>
int main()
{
int x = 20;
int y = 10;
int c ;
if( x == y )
{
printf("x 等于 y\n" );
}
else
{
printf("x 不等于 y\n" );
}
if ( x < y )
{
printf("x 小于 y\n" );
}
else
{
printf("x 不小于 y\n" );
}
if ( x > y )
{
printf("x 大于 y\n" );
}
else
{
printf("x 不大于 y\n" );
}
int t;
t = x;
x = y;
y = t;
if ( x <= y )
{
printf("x 小于或等于 y\n" );
}
if ( y >= x )
{
printf("y 大于或等于 x\n" );
}
return 0;
}
?? 程序運(yùn)行的結(jié)果如下:
?? ??
?? ??? ?
?? ?? ?
?? ??? ?
???
? ???
?
?四、邏輯運(yùn)算符
含義:
用于連接多個(gè)條件的運(yùn)算符,結(jié)果也是為真(1)或假(0),結(jié)合性為從右到左。
運(yùn)算符? | 描述 | 實(shí)例 |
---|---|---|
&& | 稱之為邏輯與運(yùn)算符,當(dāng)且僅當(dāng)倆個(gè)操作數(shù)都不為零時(shí),條件為真。 | A&&B為假 |
|| | 稱之為邏輯或運(yùn)算符,當(dāng)倆個(gè)操作數(shù)存在人一個(gè)非零時(shí),條件為真。 | A||B為真 |
! | 稱之為邏輯非運(yùn)算符,用來(lái)逆轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。將真變?yōu)榧?,假變?yōu)檎妗?/td> | !(A&&B)為真 |
下面通過(guò)一個(gè)實(shí)例代碼來(lái)幫助大家更好的理解:
#include <stdio.h>
int main()
{
int x = 20;
int y = 10;
if ( x && y )
{
printf("條件1為真\n" );
}
if ( x || y )
{
printf("條件2為真\n" );
}
x = 0;
y = 10;
if ( x && y )
{
printf("條件3為真\n" );
}
else
{
printf("條件3為假\n" );
}
if ( !(x && y) )
{
printf("條件4為真\n" );
}
return 0;
}
程序運(yùn)行的結(jié)果如下:
? ??? ?
?? ??? ??
?? ???? ? ? ??
五、賦值運(yùn)算符
含義:
賦值運(yùn)算符就是將某個(gè)值賦給某個(gè)指定的變量,結(jié)合性為從右到左。
運(yùn)算符? | 描述 | 實(shí)例 |
---|---|---|
=? | 簡(jiǎn)單的賦值運(yùn)算符,把右邊的操作數(shù)賦給左邊操作數(shù)?? ? | C=A+B將把A+B的值賦給C |
+= | 加且賦值運(yùn)算符,把左邊操作數(shù)加上右邊操作數(shù)的結(jié)果賦值給左面的操作數(shù)? | C+=A相當(dāng)于C=C+A |
-=? | ?減且賦值運(yùn)算符,把左面的操作數(shù)減右面操作數(shù)的結(jié)果賦值給左面的操作數(shù) | C-=A相當(dāng)于C=C-A |
*= | 乘且賦值運(yùn)算符,把左面的操作數(shù)乘以右邊的結(jié)果賦值給左面的操作數(shù) | C*=A相當(dāng)于C=C*A |
/= | 除且賦值操作符,把左面的操作數(shù)除以右面的操作數(shù)的結(jié)果賦值給左面的操作數(shù) | C/=A相當(dāng)于C=C/A |
%= | 求模且賦值運(yùn)算符,求兩個(gè)操作數(shù)的模賦值給左邊的操作數(shù) | C%=A相當(dāng)于C=C%A |
<<=?? | 左移且賦值運(yùn)算符 | C<<=2等同于C=C<<2 |
>>= | 右移且賦值運(yùn)算符 | C>>=2等同于C=C>>2 |
&= | 按位與且賦值運(yùn)算符 | C&=2等同于C=C&2 |
^= | 按位異或且賦值運(yùn)算符 | C^=2等同于C=C^2 |
|= | 按位或且賦值運(yùn)算符 | C|=2等同于C=C|2 |
?下面通過(guò)一個(gè)實(shí)例代碼來(lái)幫助大家更好的理解: ??? ?
#include <stdio.h>
int main()
{
int a = 21;
int c ;
c = a;
printf(" = 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c += a;
printf("+= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c -= a;
printf("-= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c *= a;
printf("*= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c /= a;
printf("/= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c <<= 2;
printf("<<= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c >>= 2;
printf(">>= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c &= 2;
printf("&= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c ^= 2;
printf("^= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
c |= 2;
printf("|= 的運(yùn)算符實(shí)例,c 的值 = %d\n", c );
return 0;
}
? ?程序運(yùn)行的結(jié)果如下:
?? ?? ?
? ?? ?
?? ??? ?
?? ??? ?
?? ??? ?
???
?? ??? ?
?? ?? ??
六、運(yùn)算符的優(yōu)先級(jí)?
?含義:
運(yùn)算符的優(yōu)先級(jí)往往會(huì)影響一個(gè)表達(dá)式的運(yùn)算的結(jié)果,比如最常見(jiàn)的就是乘除運(yùn)算的優(yōu)先級(jí)大于加減運(yùn)算。
類型 | 運(yùn)算符 | 結(jié)合性 |
---|---|---|
乘除 | ?*? ?/? ?% | 從左到右 |
加減 | ?+? - | 從左到右 |
后綴 | () [] ++ --? | 從左到右 |
一元 | +? -? ! ~ ++ --(type)* & sizeof | 從右到左 |
移位 | ?<<? >> | 從左到右 |
關(guān)系 | <<= >>= | 從左到右 |
相等與不等 | ==? ?!= | 從左到右 |
位與AND | & | 從左到右 |
位異或XOR?? ? | ^ | 從左到右 |
位或OR? | | | 從左到右 |
邏輯與AND | && | 從左到右 |
邏輯或OR | || | 從左到右 |
條件 | ?: | 從右到左 |
賦值 | ?=? +=? ?-=? ?*=? ?/=? ? %=? ? >>=? ?<<=? ?&=? ^= |= | 從右到左 |
逗號(hào) | , | 從左到右 |
? ?
?
總結(jié)
? ? ? ? 本篇文章詳細(xì)地講了C語(yǔ)言的運(yùn)算符,希望能夠幫到大家!
? ? ? ?以后還會(huì)給大家展現(xiàn)更多關(guān)于C語(yǔ)言的其他重要的基礎(chǔ)知識(shí),感謝大家支持懶大王!
? ? ? ?希望這篇博客能給各位朋友們帶來(lái)幫助,最后懶大王請(qǐng)來(lái)過(guò)的朋友們留下你們寶貴的三連以及關(guān)注,感謝你們!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-723212.html
?
到了這里,關(guān)于C/C++運(yùn)算符超詳細(xì)講解(系統(tǒng)性學(xué)習(xí)day5)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!