程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言學習筆記(三)

C語言學習筆記(三)

編輯:關於C

 

1運算符和表達式

 

1.1運算符分類:

 

算數運算符:用於算數運算,包括+、-、*、/等。

 

關系運算符:用於比較運算,包括>、<、==、!=等。

 

邏輯運算符:用於邏輯運算,包括&&、||、!三種。

 

位操作運算符:按二進制位對位運算,包括&、|、~、<<等。

 

賦值運算符:用於賦值運算,包括=、+=、&=等。

 

條件運算符:三目運算符,用於條件求值(?:).

 

逗號運算符:用於把若干表達式組合成一個表達式(,)。

 

指針運算符:用於取內容*和用於取地址&。

 

求字節數運算符:用於計算數據類型所占的字節數sizeof。

 

特殊運算符:()、[]、成員(->,.)等。

 

1.2運算順序

 

A.函數計算優先。

 

B.其次是強制類型轉換。

 

C.自增、自減和取反次之。

 

D.先乘除再加減。

 

E.有括號先算括號內的。

 

注:表達式中出現連續兩個運算符時最好用空格隔開,如a+++b要寫成:a++ +b或a+ ++b。

 

2數據類型轉換

 

2.1強制類型轉換:就是顯示的將表達式轉換成所需類型。

 

方式1:(類型名)(表達式).

 

方式2:(類型名)表達式.

 

例:強制類型轉換。

 

 

#include "stdio.h" 

#define PI 3.1415926 

main(){ 

int m,n; 

float x,y; 

x=2.5; 

y=4.8; 

m=(int)(x+y);   /*強制將浮點型轉換成整型*/ 

n=(int)x+m/3;   /*強制將x轉換成整型*/ 

m=n%4;   /*整型取余*/ 

x=x+y; 

printf("m=%d,n=%d,x=%f,f=%f",m,n,x,y); 

注:強制類型轉換不會改變原來的變量和表達式的類型屬性,只是轉換成所 需類型使用。

 

2.2隱含類型轉換:整型、單精度型和雙精度型的不同數值類型可以混合運 算,在運算過程中就有隱式類型轉換。

 

隱式類型轉換的規則就是:從低向高轉換,例如char和short可以轉 換為int。

 

3算術運算符與算術表達式

 

3.1基本算術運算符:包括+、-、*、/、%五個運算符。

 

3.2特殊的算術運算符:自加和自減。

 

前綴形式:先對運算對象自增或自減,再引用運算對象的值作為表達式    的值。

 

後綴形式:先引用運算對象的值作為表達式的值,再對運算對象自增或    自減。

 

示例:++a 等價於a=a+1,--a等價於a=a-1;

 

   a++ 等價於a=a+1,a--等價於a=a-1;

 

注:可以看出單獨使用時沒有區別,但是在表達式中對表達式影響不同。

 

例子代碼:

 

 

#include "stdio.h" 

#define PI 3.1415926 

main(){ 

int i=6,j=6,k=6, h=6,m,n,x,y; 

m=i++;                      /*後綴形式自加*/ 

n=++j;                      /*前綴形式自加*/ 

x=k--;                      /*後綴形式自減*/ 

y=--h;                      /*後綴形式自減*/ 

printf("\n i=%d, m=%d, j=%d, n=%d", i, m, j, n); 

printf("\n k=%d, x=%d, h=%d, y=%d", k, x, h, y); 

4賦值運算符與賦值表達式

 

4.1簡單的賦值運算符

 

簡單賦值的作用就是將一個表達式的值賦給一個變量存儲起來,例如a=4;

 

注:賦值運算的左邊必須是變量;

 

賦值運算優先級比較低,僅優先於,;

 

4.2復合賦值運算符

 

就是把運算和賦值結合在一起,例如+=、-=等。

 

例如:m+=3 等價於m=m+3;

 

4.3賦值表達式的運算

 

使用表達式應該注意的情況:

 

4.3.1復合的賦值運算符。

 

例子代碼:

 

 

#include "stdio.h" 

#define PI 3.1415926 

main(){ 

  int  x=2,y,z; 

  x*=3+2;                 /*等價於x=x*(3+2)*/ 

  printf("(1)x=%d\n",x); 

  x*=y=z=4;             /*等價於y=z=4,x=x*y*/ 

  printf("(2)x=%d\n",x); 

  x=y=1; 

  z=x++-1;                /*等價於y=x-1,x=x-1*/ 

  printf("(3)x=%d***z=%d\n",x,z); 

  z=x++*++y;              /*等價於y=y+1,z=x*y,x=x+1*/ 

  printf("(4)x=%d***y=%d***z=%d\n",x,y,z); 

4.3.2賦值轉換:指運算符兩邊類型不同但都是數值或字符,C就會自動轉換相應類型。

 

例子代碼:

 

 

#include "stdio.h" 

#define PI 3.1415926 

main(){ 

     int a,b=322; 

     float x,y=8.88; 

     char c1='k',c2; 

     a=y; 

     x=b; 

     a=c1; 

     c2=b; 

     printf("%d,%f,%d,%c",a,x,a,c2); 

}  

 

摘自letthinking的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved