C語言基礎 運算符

自增自減運算符

  

賦值運算符<邏輯與運算符<關係運算符<算術運算符

無論++在前還是在後都會自增1

++a; a本身會自增1,它的返回值(結果)是原來的 a + 1 的值

a++; a本身會自增1,它的返回值(結果)是原來的 a 的值

 

int a = 2;

int b = a++ + a++ ;  //b = 2 + 2    a = 4

b = ++a + ++a ;       //5 + 6   a = 6

b = ++a + ++a; //  7 +8   a= 8

 printf("a = %d , b =%d\n", a , b);

無論- -在前還是- -在後a本身都會自減 1

---------------------------------------------------------

邏輯運算符

 

所有邏輯運算符他們的結果只有兩個,要麼真(1) 要麼假(0)

&& 邏輯與
&& 只要有一個表達式爲假,那麼整個表達式的結果就爲假
&& 如果左邊的表達式爲假,那麼右邊的表達式就不參與運算(與斷路)
口訣:一假則假
結合方向:從左往右


||邏輯或
1.只要有一個表達式爲真,那麼整個表達式結果爲真
2.如果前的表達式爲真,那麼後面的表達式就不參與運算(或斷路)
口訣:一真則真

結合方向:從左往右

 

&& 和 || 的優先級要小於 關係運算符的優先級  大於 賦值運算符的優先級

! 邏輯非

1.真變假,假變真

2.結合方向:從右往左

3.它優先級要高於比較運算符和算術運算符的優先級

! 邏輯非

在C語言中所有數值都是有真假性,所有非零的數都爲真,只有0爲假

三目運算符:
條件表達式:由關係運算符或邏輯運算符構成表達式

條件表達式 ? 結果1 : 結果2;

如果條件表達式成立就返回結果1 否則 就返回結果2

--------------------------------------------------

關係運算符

 

所有的關係運算符都是用來比較兩個數據的,它們的結果只有兩個,要麼是真(1),要麼是假(0)

<
>=
<=
上面四個比較運算符的優先級要大於後面的兩個
!=    不等於
==  等於


賦值運算符的優先級 < 比較運算符的優先級 <  算術運算符的優先級
比較運算符的結合性從左往右的

int result = 5 > 6 < 4< 2;
printf("%d\n",result);
當我們不確定某些運算符優先級的時候,可以使用()來明確優先級

result = ( 5== 5 ) < 4 
int a = 10 ;  //比較時會轉換爲 double
double b = 20.0;

result = a < b ;

printf("%d\n",result);


--------------------------------------------------------------

賦值運算符 

 

=  賦值運算符
複合賦值運算符

+=

-=

*=

/=

%=

 

賦值運算符:把等號右邊的數值放到左邊的變量中,同時它做一個表達式本身有值,它值就是右邊的數據
int a;
a = 10;
printf("%d",a = 10);
int  b , c;
b = c = 2 ;
a +=  10; // a  = a+ 10 ;
a -=  8; // a = a - 8 ;

a *=  6; // a  = a *6 ;

a /=  4; // a  = a /4 ;

a %=  2; // a  = a %2 ;

 

所有賦值運算符的優先級都是小於算數運算符的

賦值運算符是所有運算符中除了逗號運算符以外優先級最低的

int a = 4;

a *= 2 + 3 ;

peintf("a = %d\n",a); //先2+ 3 再乘a 20

--------------------------------------------------------------

算數運算符

 

算術運算:

+ 正號
-  負號

+   加

-   減
*    乘  

/    除  

%   取模 或 取餘

1.取模運算符的正負性取決於那個操作數的正負

2.取模運算符的操作數只能是整數

單目運算符:操作數只有一個
雙目運算符:操作數有兩個
三目運算符:操作數有三個
int main()
{
  -1;//單目
 1 + 2; //雙目
 a > b ? 1 : 0  //三目
}


優先級 : 優先級高操作符他們兩邊操作數優先與這個操作符進行結合成爲一個整體.

結合方向:當優先級相同的時候,從那邊開始計算

算數運算符的結合方向是從左到右

 

自動類型轉換 —>類型提升,當表示範圍小的類型與表示範圍大的類型進行運算,小類型會自動轉換大類型
當兩個相同數據類型的數據進行運算的時候,那麼他們運算出來的結果還是什麼類型
//double d = 10 / 4;
//doubled = 10 / 4.0;
強制類型轉換:在某個數的前面(數據類型)數據

//double d = (double) 10 / 4 ;

當把一個大類型數複製一個小類型數,大類型會自動轉換小類型

注意點:導致精度丟失

int a = 10.5 ;

printf ("%d”,a);

/*

int a = 10; 

int b = 4;

double  d = (double) a /b;  一定要註明類型

*/

int d = (int) 14.6;
printf("d= %ld\n",d);

--------------------------------------------------

sizeof運算符

 

用來計算常量,變量,以及數據類型(指的是這種數據類型的變量或常量)所佔用存儲空間的字節數

int size = sizeof(1);

printf("%d\n",size);// 4

sizeof 是運算符不是函數,當他用在常量上面可以省略小括號

sizeof 常量 或 sizeof(常量)  

當sizeof 作用再變量上sizeof(變量名稱) sizeof 變量名稱

sizeof作用在數據類型 , 表示這個中數據類型的常量或變量所佔用存儲空間

//類型本身是不佔用存儲空間,只有這種類型那個的數據才佔用存儲空間

//當size作用在數據類型上,小括號是不可以省略的

int size = sizeof(int);
printf("%d\n",size); // 顯示int所佔空間 

在C語言中所有表達式都有返回值(結果)
結合方向:從左往右
返回值:最後一個表達式的值
//printf(“%d",(1,2,3))
 inta = 10;

int b = 2;

int result = (a += 2, b + 4 ,4+ a);

printf("result =%d",result);

//注意

//這個不是逗號表達式,這個是定義多個變量的簡易方式
int a , b , d;

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章