C語言基礎知識-運算符與表達式

            C語言基礎知識-運算符與表達式
node

                                      做者:尹正傑數組

版權聲明:原創做品,謝絕轉載!不然將追究法律責任。函數

 

 

 

一.經常使用運算符分類spa

1>.算術運算符3d

    用於處理四則運算。

2>.賦值運算符指針

    用於將表達式的值賦給變量。

3>.比較運算符code

    用於表達式的比較,並返回一個真值或假值。

4>.邏輯運算符對象

    用於根據表達式的值返回真值或假值

5>.位運算符blog

    用於處理數據的位運算。

6>.sizeof運算符內存

    用於求字節數長度。

 

二.算術運算符

運算符          術語           示例          結果
 +           正號            +3           3
 -           負號            -3           -3
 +           加            10 + 5         15
 -           減            10 - 5         10
 *           乘            10 * 5         50
 /           除            10 / 5         2
 %           取模(取餘)       10 % 3         1
 ++           前自增          a=2,b=++a;      a=3;b=3;
 ++           後自增          a=2,b=a++;      a=3;b=2;
 --           前自減          a=2;b=--a;      a=1;b=1;
 --           後自減          a=2;b=a--;      a=1;b=2;
   

 

三.賦值運算符

運算符          術語           示例          結果
=           賦值           a=2;b=3        a=2;b=3;
 +=          加等於          a=0;a+=2;       a=2;
 -=           減等於          a=5;a-=3;       a=2;
*=           乘等於          a=2;a*=2;       a=4;
/=           除等於          a=4;a/=2;       a=2;    
 %=           模等於          a=3;a%2;        a=1;

 

四.比較運算符

運算符          術語           示例          結果("真"用數字"1"來表示,"假"用數字"0"來表示)
==           相等於          4==3          0
!=           不等於          4!=3          1
<            小於           4<3           0
>            大於           4>3           1
<=           小於等於         4<=3           0
>=           大於等於         4>=1           1

 

五.邏輯運算符

運算符          術語           示例          結果
 !            非            !=          若是a爲假,則!a爲真,若是爲真,則!a爲假。
 &&            與           a && b         若是a和b都爲真,則結果爲真,不然爲假。
 ||            或           a || b        若是a和b有一個爲真,則結果爲真,兩者都爲假時,結果爲假。

 

 

六.運算符優先級

說明:
  同一優先級的運算符,結合次序由結合方向所決定。
  簡單記就是:! > 算術運算符 > 關係運算符 > && > || > 賦值運算符

  詳情請參考:https://baike.baidu.com/item/%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BC%98%E5%85%88%E7%BA%A7/4752611?fr=aladdin
優先級
運算符
名稱或含義
使用形式
結合方向
說明
1
[]
數組下標
數組名[整型表達式]
左到右
 
()
圓括號
(表達式)/函數名(形參表)
 
.
成員選擇(對象)
對象.成員名
 
->
成員選擇(指針)
對象指針->成員名
 
2
-
負號運算符
-算術類型表達式
右到左
單目運算符
(type)
強制類型轉換
(純量數據類型)純量表達式
 
++
自增運算符
++純量類型可修改左值表達式
單目運算符
--
自減運算符
--純量類型可修改左值表達式
單目運算符
*
取值運算符
*指針類型表達式
單目運算符
&
取地址運算符
&表達式
單目運算符
!
邏輯非運算符
!純量類型表達式
單目運算符
~
按位取反運算符
~整型表達式
單目運算符
sizeof
長度運算符
sizeof 表達式
sizeof(類型)
 
3
/
表達式/表達式
左到右
雙目運算符
*
表達式*表達式
雙目運算符
%
餘數(取模)
整型表達式%整型表達式
雙目運算符
4
+
表達式+表達式
左到右
雙目運算符
-
表達式-表達式
雙目運算符
5
<<
左移
整型表達式<<整型表達式
左到右
雙目運算符
>>
右移
整型表達式>>整型表達式
雙目運算符
6
>
大於
表達式>表達式
左到右
雙目運算符
>=
大於等於
表達式>=表達式
雙目運算符
<
小於
表達式<表達式
雙目運算符
<=
小於等於
表達式<=表達式
雙目運算符
7
==
等於
表達式==表達式
左到右
雙目運算符
!=
不等於
表達式!= 表達式
雙目運算符
8
&
按位與
整型表達式&整型表達式
左到右
雙目運算符
9
^
按位異或
整型表達式^整型表達式
左到右
雙目運算符
10
|
按位或
整型表達式|整型表達式
左到右
雙目運算符
11
&&
邏輯與
表達式&&表達式
左到右
雙目運算符
12
||
邏輯或
表達式||表達式
左到右
雙目運算符
13
?:
條件運算符
表達式1? 表達式2: 表達式3
右到左
三目運算符
14
=
賦值運算符
可修改左值表達式=表達式
右到左
 
/=
除後賦值
可修改左值表達式/=表達式
 
*=
乘後賦值
可修改左值表達式*=表達式
 
%=
取模後賦值
可修改左值表達式%=表達式
 
+=
加後賦值
可修改左值表達式+=表達式
 
-=
減後賦值
可修改左值表達式-=表達式
 
<<=
左移後賦值
可修改左值表達式<<=表達式
 
>>=
右移後賦值
可修改左值表達式>>=表達式
 
&=
按位與後賦值
可修改左值表達式&=表達式
 
^=
按位異或後賦值
可修改左值表達式^=表達式
 
|=
按位或後賦值
可修改左值表達式|=表達式
 
15
,
逗號運算符
表達式,表達式,…
左到右
從左向右順序結合
 

七.類型轉換

 

數據有不一樣的類型,不一樣類型數據之間進行混合運算時必然涉及到類型的轉換問題。

轉換的方法有兩種:
    自動轉換(隱式轉換):遵循必定的規則,因爲編譯系統自動完成。
    強制類型轉換:把表達式的運算結果強制轉換成所需的數據類型。

  
類型轉換的原則:
    佔用內存字節數少(或域小)的類型,向佔用內存字節數多(值域大)的類型轉換,以保證精確度不下降。

1>.隱式轉換

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat type_demo.c 
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/

#include <stdio.h>

int main(void)
{
    int num = 5;
    printf("s1=%d\n",num/2);
    printf("s2=%1f\n",num/2.0);
    return 0;        
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o type_demo type_demo.c 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./type_demo 
s1=2
s2=2.500000
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 

2>.強制轉換

[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# cat type_demo2.c 
/*
@author :yinzhengjie
blog:http://www.cnblogs.com/yinzhengjie
EMAIL:y1053419035@qq.com
*/

#include <stdio.h>

int main(void)
{
    //強制類型轉換指的是使用強制類型轉換運算符,將一個變量或表達式轉化成所需的類型,其基本語法格式爲:(類型說明符)(表達式)
    float x = 0;
    int i = 0;
    x = 3.6f;
    i = x;        //x爲實型,i爲整型,直接複製會有告警
    i =(int)x;    //使用強制類型轉換
    printf("x=%f,i=%d\n",x,i);
        

    return 0;        
}
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# gcc -o type_demo2 type_demo2.c 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# ./type_demo2 
x=3.600000,i=3
[root@node101.yinzhengjie.org.cn /yinzhengjie/code/day002]# 
相關文章
相關標籤/搜索