1樓:匿名使用者
1. 常用運算子
算術運算子: +, -, *, /, %
關係運算子: >, <, >=, <=, ==, !=
邏輯運算子: !, &&, ||
賦值運算子:=, +=, -=,*= ,/= ,++,--
2.算術運算子: +,-,*沒什麼好說的,跟數學裡邊一樣。
/ 在c中稱為 整除運算子,運算規則,除號兩邊都是整數時結果是整數,否則是浮點數
舉個例子: 3/2 的值是 1 ; 3.0/2 或 3/2.0 或 3.0/2.0 的值都是 1.5
% 求餘運算子,就是求兩數相除的餘數。 有個要求,運算子兩邊的數必須都是整數,否則會報錯,7%4 的值是3 ,7.0%4 在c中是錯誤的表示式。
3.關係運算子 就是數學中關係運算子的運算規則,注意區分 這裡的 等於== 和賦值的 =
舉個例子: int a=4; 的意思是 把4 賦值給a a== 4 的意思是比較 a 和4 是不是相等。
4.邏輯運算 ! 非 && 與 || 或
也跟數學中一樣,
比如 5>3 的值是 真, 那麼!(5>3) 就是假
&& 兩邊的表示式都是真的時候整個表示式是真,否則是假。 || 兩邊的表示式都是假的時候整個表示式是假,否則為真。
5.賦值
+= a+=5 等價於: a=a+5 其餘類似。
++ a++ 等價於 a=a+1 --類似。
這裡邊還有比較不好理解的 比如 a++ 和 ++a 的不同。先不說了,你理解了基本的再說吧。
2樓:有問題wo來答
符號的意思和我們平常的意思是差不多的
只是c裡面符號代表的含義不同
c語言運算子號的表示方法
3樓:王盈瑞
1 算術運算子
用於各類數值運算。
包括加(+)、減(-)、乘(*)、除(/)、求餘(或稱模運算,%)、自增(++)、自減(--)共七種。
2.關係運算子
用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)
、小於等於(<=)和不等於(!=)六種。
3.邏輯運算子
用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
4.位操作運算子
參與運算的量,按二進位制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
5.賦值運算子
用於賦值運算,分為簡單賦值(=)、複合算術賦值(+=,-=,*=,/=,%=)和複合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
6.條件運算子
這是一個三目運算子,用於條件求值(?:)。
7.逗號運算子
用於把若干表示式組合成一個表示式(,)。
8.指標運算子
用於取內容(*)和取地址(&)二種運算。
9.求位元組數運算子
用於計算資料型別所佔的位元組數(sizeof)。
10.特殊運算子
有括號(),下標,成員(→,.)等幾種。
優先順序1級 結合方向 左結合(自左至右)
( ) 圓括號
[ ]下標運算子
-> 指向結構體成員運算子
. 結構體成員運算子(請注意它是一個實心圓點)
優先順序2級 結合方向 右結合(自右至左)單目運算子
! 邏輯非運算子
~ 按位取反運算子
++ 自增運算子
-- 自減運算子
-負號運算子
(型別) 型別轉換運算子
* 指標運算子
& 地址與運算子
sizeof 長度運算子
優先順序3級 結合方向 左結合 雙目運算子
* 乘法運算子
/ 除法運算子
% 取餘運算子
優先順序4級 結合方向 左結合 雙目運算子
+ 加法運算子
- 減法運算子
優先順序5級 結合方向 左結合 雙目運算子
<< 左移運算子
>> 右移運算子
優先順序6級 結合方向 左結合 雙目運算子
<、<=、>、>= 關係運算子
優先順序7級 結合方向 左結合 雙目運算子
== 等於運算子 (判斷)
!= 不等於運算子(判斷)
優先順序8級 結合方向 左結合 雙目運算子
& 按位與運算子
優先順序9級 結合方向 左結合 雙目運算子
^ 按位異或運算子
優先順序10級 結合方向 左結合 雙目運算子
| 按位或運算子 舉例:0xfe|0xef 即為1111 1110 與1110 1111按位或運算則答案為:1111 1111 即0xff。
優先順序11級 結合方向 左結合 雙目運算子
&& 邏輯與運算子
優先順序12級 結合方向 左結合 雙目運算子
|| 邏輯或運算子
優先順序13級 結合方向 右結合 三目運算子
? : 條件運算子
優先順序14級 結合方向 右結合 雙目運算子
= 賦值運算子
+ = 加後賦值運算子 如s+=1表示s=s+1
- = 減後賦值運算子 如s-=1表示s=s-1
* = 乘後賦值運算子
/ = 除後賦值運算子
% = 取模後賦值運算子
< <= 左移後賦值運算子
>>=右移後賦值運算子
&= 按位與後賦值運算子
^=按位異或後賦值運算子
|= 按位或後賦值運算子
優先順序15級 結合方向 左結合
, 逗號運算子
4樓:匿名使用者
c的運算子有很多的,除了常規的數**算符+,-,*,/,%外,還有邏輯運算子&&,!,||當然還有位運算子&,|,!,^,<<,>>,指標或結構符.
,->,比較運算》,<,==,<=,>=組合運算+=,-=,<=,>=,還有其它的如,(逗號)運算,三目運算?:自增/減運算++,--這些一般c教材上都有的
c語言邏輯運算子 我不明白&&和||到底是怎麼運算的
5樓:匿名使用者
1 形式:
&&的形式為a&&b。
||的形式為a||b。
2 計算規則:
&&只有當a和b的值均非0時,結果為1,否則結果為0。
||只有當a和b的值均為0時,結果為0,否則結果為1。
3 優先順序:
&&的優先順序比||高,所以在寫在一起時,先計算&& 再計算||。
相同符號時,自左向右計算。
4 短路原則:
對於&&,如果左運算元a為0,那麼結果必然為0, 右運算元b將不參與計算。
對於||,如果左運算元a非0,那麼結果必然為1, 右運算元b將不參與計算。
6樓:匿名使用者
邏輯運算,方式子成立是即為真時整個式子值就為1反之為0,而對於值來說只要不是0就為真,如i&&j&&k=1,i,j=3都為真,所以整個式子為真等於1。另外要注意的是當&&左邊為假時不進行右邊計算,如(i=0)&&(j=3);l為0假右邊j=3不進行運算,所以j還是等於2,手機寫的真不方便。
7樓:**
i&&j&&k,先判斷i&&j,因為i和j都大於0,所以這個命題是真的,所以i&&j這個表示式等於1,再判斷後面的1&&k(ps:如果i&&j這個表示式等於0,後面的就不用判斷了,整個表示式就是0了)
。因為k大於0,所以1&&k就等於1,整個表示式就等於1了。
8樓:匿名使用者
邏輯正即為1,否則就為0,所以i&&j&&k=1
至於後面的就是因為&&這個運算子了,如果它的前一個為0的話那後面的就會直接忽略
不過你的結果貌似有點問題。。。。
c語言運算子有什麼?都分別包括什麼意思?又有什麼用處?
9樓:匿名使用者
一、賦值運算子
賦值語句的作用是把某個常量或變數或表示式的值賦值給另一個變數。符號為『=』。這裡並不是等於的意思,只是賦值,等於用『==』表示。
注意:賦值語句左邊的變數在程式的其他地方必須要宣告。
得已賦值的變數我們稱為左值,因為它們出現在賦值語句的左邊;產生值的表示式我們稱為右值,因為她它們出現在賦值語句的右邊。常數只能作為右值。
例如:count=5;
total1=total2=0;
第一個賦值語句大家都能理解。
第二個賦值語句的意思是把0同時賦值給兩個變數。這是因為賦值語句是從右向左運算的,也就是說從右端開始計算。這樣它先total2=0;然後total1=total2;那麼我們這樣行不行呢?
(total1=total2)=0;
這樣是不可以的,因為先要算括號裡面的,這時total1=total2是一個表示式,而賦值語句的左邊是不允許表示式存在的。
二、算術運算子
在c語言中有兩個單目和五個雙目運算子。
符號 功能
+ 單目正
- 單目負
* 乘法
/ 除法
% 取模
+ 加法
- 減法
下面是一些賦值語句的例子, 在賦值運算子右側的表示式中就使用了上面的算術運算子:
area=height*width;
num=num1+num2/num3-num4;
運算子也有個運算順序問題,先算乘除再算加減。單目正和單目負最先運算。
取模運算子(%)用於計算兩個整數相除所得的餘數。例如:
a=7%4;
最終a的結果是3,因為7%4的餘數是3。
那麼有人要問了,我要想求它們的商怎麼辦呢?
b=7/4;
這樣b就是它們的商了,應該是1。
也許有人就不明白了,7/4應該是1.75,怎麼會是1呢?這裡需要說明的是,當兩個整數相除時,所得到的結果仍然是整數,沒有小數部分。
要想也得到小數部分,可以這樣寫7.0/4或者7/4.0,也即把其中一個數變為非整數。
那麼怎樣由一個實數得到它的整數部分呢?這就需要用強制型別轉換了。例如:
a=(int) (7.0/4);
因為7.0/4的值為1.75,如果在前面加上(int)就表示把結果強制轉換成整型,這就得到了1。那麼思考一下a=(float) (7/4);最終a的結果是多少?
單目減運算子相當於取相反值,若是正值就變為負值,若是負數就變為正值。
單目加運算子沒有意義,純粹是和單目減構成一對用的。
三、邏輯運算子
邏輯運算子是根據表示式的值來返回真值或是假值。其實在c語言中沒有所謂的真值和假值,只是認為非0為真值,0為假值。
符號 功能
&& 邏輯與
|| 邏輯或
! 邏輯非
例如:5!3;
0||-2&&5;
!4;當表示式進行&&運算時,只要有一個為假,總的表示式就為假,只有當所有都為真時,總的式子才為真。當表示式進行||運算時,只要有一個為真,總的值就為真,只有當所有的都為假時,總的式子才為假。邏輯非(!
)運算是把相應的變數資料轉換為相應的真/假值。若原先為假,則邏輯非以後為真,若原先為真,則邏輯非以後為假。
還有一點很重要,當一個邏輯表示式的後一部分的取值不會影響整個表示式的值時,後一部分就不會進行運算了。例如:
a=2,b=1;
a||b-1;
因為a=2,為真值,所以不管b-1是不是真值,總的表示式一定為真值,這時後面的表示式就不會再計算了。
四、關係運算子
關係運算子是對兩個表示式進行比較,返回一個真/假值。
符號 功能
> 大於
< 小於
>= 大於等於
<= 小於等於
== 等於
!= 不等於
這些運算子大家都能明白,主要問題就是等於==和賦值=的區別了。
一些剛開始學習c語言的人總是對這兩個運算子弄不明白,經常在一些簡單問題上出錯,自己檢查時還找不出來。看下面的**:
if(amount=123) ……
很多新人都理解為如果amount等於123,就怎麼樣。其實這行**的意思是先賦值amount=123,然後判斷這個表示式是不是真值,因為結果為 123,是真值,那麼就做後面的。如果想讓當amount等於123才執行時,應該if(amount==123) ……
五、自增自減運算子
這是一類特殊的運算子,自增運算子++和自減運算子--對變數的操作結果是增加1和減少1。例如:
--couter;
couter--;
++amount;
amount++;
看這些例子裡,運算子在前面還是在後面對本身的影響都是一樣的,都是加1或者減1,但是當把他們作為其他表示式的一部分,兩者就有區別了。運算子放在變數前面,那麼在運算之前,變數先完成自增或自減運算;如果運算子放在後面,那麼自增自減運算是在變數參加表示式的運算後再運算。這樣講可能不太清楚,看下面的例子:
num1=4;
num2=8;
a=++num1;
b=num2++;
a =++num1;這總的來看是一個賦值,把++num1的值賦給a,因為自增運算子在變數的前面,所以num1先自增加1變為5,然後賦值給a,最終a也為5。b=num2++;這是把num2++的值賦給b,因為自增運算子在變數的後面,所以先把num2賦值給b,b應該為8,然後num2自增加1變為 9。
那麼如果出現這樣的情況我們怎麼處理呢?
c=num1+++num2;
到底是c=(num1++)+num2;還是c=num1+(++num2);這要根據編譯器來決定,不同的編譯器可能有不同的結果。所以我們在以後的程式設計當中,應該儘量避免出現上面複雜的情況。
六、複合賦值運算子
在賦值運算子當中,還有一類c/c++獨有的複合賦值運算子。它們實際上是一種縮寫形式,使得對變數的改變更為簡潔。
total=total+3;
乍一看這行**,似乎有問題,這是不可能成立的。其實還是老樣子,'='是賦值不是等於。它的意思是本身的值加3,然後在賦值給本身。為了簡化,上面的**也可以寫成:
total+=3;
複合賦值運算子有下列這些:
符號 功能
+= 加法賦值
-= 減法賦值
*= 乘法賦值
/= 除法賦值
%= 模運算賦值
<<= 左移賦值
>>= 右移賦值
&= 位邏輯與賦值
|= 位邏輯或賦值
^= 位邏輯異或賦值
上面的十個複合賦值運算子中,後面五個我們到以後位運算時再說明。
那麼看了上面的複合賦值運算子,有人就會問,到底total=total+3;與total+=3;有沒有區別?答案是有的,對於a=a+1,表示式a被計算了兩次,對於複合運算子a+=1,表示式a僅計算了一次。一般的來說,這種區別對於程式的執行沒有多大影響,但是當表示式作為函式的返回值時,函式就被呼叫了兩次(以後再說明),而且如果使用普通的賦值運算子,也會加大程式的開銷,使效率降低。
七、條件運算子
條件運算子(?:)是c語言中唯一的一個三目運算子,它是對第一個表示式作真/假檢測,然後根據結果返回兩外兩個表示式中的一個。
《表示式1>?《表示式2>:《表示式3>
在運算中,首先對第一個表示式進行檢驗,如果為真,則返回表示式2的值;如果為假,則返回表示式3的值。
例如:a=(b>0)?b:-b;
當b>0時,a=b;當b不大於0時,a=-b;這就是條件表示式。其實上面的意思就是把b的絕對值賦值給a。
八、逗號運算子
在c語言中,多個表示式可以用逗號分開,其中用逗號分開的表示式的值分別結算,但整個表示式的值是最後一個表示式的值。
假設b=2,c=7,d=5,
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
對於第一行**,有三個表示式,用逗號分開,所以最終的值應該是最後一個表示式的值,也就是d+3,為8,所以a=8。對於第二行**,那麼也是有三個表示式,這時的三個表示式為a2=++b、c--、d+3,(這是因為賦值運算子比逗號運算子優先順序高)所以最終表示式的值雖然也為8,但a2=3。
還有其他的如位邏輯運算子,位移運算子等等,我們等到講位運算時再說明。
九、優先順序和結合性
從上面的逗號運算子那個例子可以看出,這些運算子計算時都有一定的順序,就好象先要算乘除後算加減一樣。優先順序和結合性是運算子兩個重要的特性,結合性又稱為計算順序,它決定組成表示式的各個部分是否參與計算以及什麼時候計算。
下面是c語言中所使用的運算子的優先順序和結合性:
優先順序 運算子 結合性
(最高) () -> . 自左向右
! ~ ++ -- + - * & sizeof 自右向左
* / % 自左向右
+ - 自左向右
<< >> 自左向右
< <= > >= 自左向右
== != 自左向右
& 自左向右
^ 自左向右
| 自左向右
&& 自左向右
|| 自左向右
?: 自右向左
= += -= *= /= %= &= ^= |= <<= >>= 自右向左
(最低) , 自左向右
c語言運算子,C語言 運算子 是怎麼運算的
9除以5商1餘4 不是說小數最後位是餘數 餘數就是在整數的除法中,只有能整除與不能整除兩種情況。當不能整除時,就產生餘數,所以餘數問題在小學數學中非常重要。餘數有如下一些重要性質 a,b,c均為自然數 1 餘數小於除數。2 被除數 除數 商 餘數 除數 被除數 餘數 商 商 被除數 餘數 除數。3 ...
簡單的c語言邏輯運算子問題,關於C語言邏輯運算子一道簡單的題目
k 0是賦值語句,是把0賦值給變數k,然後k的值就變成0了,如果是k 0才是判斷。關於c語言邏輯運算子一道簡單的題目 這是邏輯運算子的短路判斷造成的 由於邏輯運算子 和 實現判斷左值的,顯然如果根據左值就能夠判斷整個表示式真假的話,那剩下的就不用判斷了 目前的c編譯就是這樣處理的 對於邏輯或 左值為...
c語言中取餘數運算子,結果的符號是正數還是負數
取決於不同的編譯器,一般來說與被除數的符號相同。如圖 c語言程式中無符號數a的值是負數,為什麼作整形輸出時的結果是64870?負數在記憶體中是以補碼的形式儲存的,即 666 原碼 1000 0010 1001 1010 反碼 1111 1101 0110 0101 符號位不變,其它位取反 補碼 11...