C語言.運(yùn)算符和表達(dá)式_第1頁
C語言.運(yùn)算符和表達(dá)式_第2頁
C語言.運(yùn)算符和表達(dá)式_第3頁
C語言.運(yùn)算符和表達(dá)式_第4頁
C語言.運(yùn)算符和表達(dá)式_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式概述運(yùn)算符和運(yùn)算對象的關(guān)系。單目運(yùn)算符:-5雙目運(yùn)算符:a+b三目運(yùn)算符:a?b:c運(yùn)算符具有優(yōu)先級和結(jié)合方向。一個(gè)運(yùn)算對象的兩邊有不同的運(yùn)算符,首先執(zhí)行優(yōu)先級別較高的運(yùn)算。例:a+b*c如果一個(gè)運(yùn)算對象兩邊的運(yùn)算符級別相同,則應(yīng)按由左向右的方向。例:a+b+c算術(shù)運(yùn)算符和算術(shù)表達(dá)式+(加)-(減)*(乘)/(除)%(整除求余)高低算術(shù)運(yùn)算符屬雙目運(yùn)算符,結(jié)合方向自左至右。算術(shù)運(yùn)算符優(yōu)先級:*/%+-關(guān)于%運(yùn)算符:兩個(gè)操作數(shù)為整型,其結(jié)果為余數(shù)5%3=2 5%2=13%5=? 2%5=?運(yùn)算所得結(jié)果的符號與運(yùn)算符左側(cè)操作數(shù)的符號相同-4%3=-14%(-3)=11+2=? 4/3=? ?=?1+2=3 4/3=1 ?=01+0.2=? 4.0/3=?1+0.2=1.2 4.0/3=1.333333轉(zhuǎn)換規(guī)律是低類型向高類型轉(zhuǎn)換doublefloat高

longunsigned低

intchar,short各類數(shù)值型數(shù)據(jù)間混合運(yùn)算一般形式為:(類型名)(表達(dá)式)#include<stdio.h>intmain(void){doublex=3.6,y;inti=(int)x,j;y=i/5;j=i/5;printf(“x=%f,y=%f\n”,x,y);printf(“i=%d,j=%d\n”,i,j);return(0);}運(yùn)行結(jié)果為:x=3.600000,y=0.000000i=3,j=0強(qiáng)制類型轉(zhuǎn)換運(yùn)算符能將一個(gè)表達(dá)式的值轉(zhuǎn)換成所需的數(shù)據(jù)類型-∞-4–3034+∞-3.53.2向零靠攏原則

算術(shù)運(yùn)算符和算術(shù)表達(dá)式#include<stdio.h>intmain(void){inta,b;floatc;scanf(“%d,%d,%f”,&a,&b,&c);printf(“a+b=%d\n”,a+b);printf(“a-b=%d\n”,a-b);printf(“a/c=%f\n”,a/c);printf(“a%%c=%d\n”,a%(int)c);return(0);}兩個(gè)“%%”表示輸出一個(gè)“%”

a+b=5a-b=-1a/c=0.500000a%c=2若輸入為2,3,4.0則輸出為多少?求解一元二次方程10x2+600x+5=0的兩個(gè)實(shí)根。#include<stdio.h>#include<math.h> intmain(void){inta,b,c; floatroot1,root2; a=10;b=600;c=5; printf("ROOT1=%f,ROOT2=%f\n",root1,root2);return(0);}root1=(-b+sqrt(b*b-4*a*c))/(2*a);root2=(-b-sqrt(b*b-4*a*c))/(2*a);關(guān)系運(yùn)算符和關(guān)系表達(dá)式C語言提供了六種關(guān)系運(yùn)算符:

<、>、<=、>=

優(yōu)先級高

==、!=

優(yōu)先級低關(guān)系運(yùn)算符屬雙目運(yùn)算符,結(jié)合方向自左至右。關(guān)系運(yùn)算結(jié)果只能是:0(代表假),1(代表真)例如:intx=3,y=5;x>y的結(jié)果為0,即為“假”。邏輯運(yùn)算符和邏輯表達(dá)式三種邏輯運(yùn)算符:&&(邏輯與)、||(邏輯或)雙目運(yùn)算符 低!(邏輯非) 單目運(yùn)算符 高邏輯運(yùn)算符具有自左至右的結(jié)合性。邏輯運(yùn)算結(jié)果只能是:0(代表假),1(代表真)C語言中沒有邏輯值,用0代表假,非零值代表真邏輯運(yùn)算符和邏輯表達(dá)式三種邏輯操作

ab!a!ba&&ba||b

非零非零0011

非零零0101

零非零1001

零零1100邏輯運(yùn)算符和邏輯表達(dá)式&&:從左向右運(yùn)算,只要其中某一表達(dá)式的值為“假”,整個(gè)表達(dá)式的值為假,其后表達(dá)式不再運(yùn)算。inta=5,b=5,c=5;!a&&(b=a+c)&&c; ||:從左向右運(yùn)算,只要其中某一表達(dá)式的值為“真”,整個(gè)表達(dá)式的值為真,其后表達(dá)式不再運(yùn)算。inta=5,b=5,c=5;a||(b=b+1)||(c=a+b); 運(yùn)行結(jié)果:

1

a1=5,b1=5,c1=4

1

a1=5,b1=7,c1=4#include<stdio.h>intmain(void){inta=5,b=5,c=4;

a||(b=a+c)&&c;

printf("\n%d",a||(b=a+c)&&c);printf("\na1=%d,b1=%d,c1=%d",a,b,c);

a&&(b=b+1)||(c=b+1);printf("\n%d",a&&(b=b+1)||(c=b+1));printf("\na2=%d,b2=%d,c2=%d\n",a,b,c);return(0);}邏輯運(yùn)算符和邏輯表達(dá)式優(yōu)先級關(guān)系算術(shù)、邏輯和關(guān)系運(yùn)算符三者間的優(yōu)先級關(guān)系為:

!→算術(shù)運(yùn)算符→關(guān)系運(yùn)算符→&&,||

(高)(低)用邏輯運(yùn)算符將關(guān)系表達(dá)式或任意數(shù)據(jù)類型(除void外)的數(shù)據(jù)連接起來就構(gòu)成了邏輯表達(dá)式。邏輯表達(dá)式的結(jié)果為0或1。注意:C語言中不允許兩個(gè)關(guān)系運(yùn)算符連用,必須用邏輯符連接。例1:表示一個(gè)兩位數(shù)x10<=x<=99 ×(x>=10)&&(x<=99)

√例2:表示一個(gè)字母ch(注意有大小寫兩種字母)

((ch>=‘a(chǎn)’)&&(ch<=‘z’))||((ch>=‘A’)&&(ch<=‘Z’))賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符“=”的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量,賦值運(yùn)算符的左邊不能是一個(gè)表達(dá)式,只能是一個(gè)變量。例如:

x+y=3;z=x+y;賦值運(yùn)算符和賦值表達(dá)式復(fù)合的賦值運(yùn)算符是在賦值符“=”之前加上其他運(yùn)算符構(gòu)成的。例如:

a+=b等價(jià)于a=a+b

x*=y+z等價(jià)于x=x*(y+z)x%=y等價(jià)于x=x%yC語言可以使用的10種復(fù)合賦值運(yùn)算符有:+=、-=、*=、/=、%=<<=、>>=、&=、|=、=賦值運(yùn)算符和賦值表達(dá)式賦值表達(dá)式的結(jié)合方向是自右至左的例:a+=a*=a=2a=2a=2a*=2a=a*2=2*2=4a+=4a=a+4=4+4=8a的值為8①②③賦值運(yùn)算符和賦值表達(dá)式#include<stdio.h>intmain(void){intx=2;x+=x-=x*x;/*結(jié)合性是自右至左*/printf(“x=%d\n”,x);return(0);}1.x=x-x*x=-22.x=x+(-2)=-4運(yùn)行結(jié)果:x=-4自增運(yùn)算符和自減運(yùn)算符“++”和“--”運(yùn)算符都是單目運(yùn)算符,其運(yùn)算對象只能是整型變量、實(shí)型和指針變量。它們既可以放在運(yùn)算對象的變量前面,也可以放在運(yùn)算對象的變量后面。放在前面表示先自增再使用運(yùn)算對象的變量放在后面表示先使用運(yùn)算對象的變量再自增自增運(yùn)算符和自減運(yùn)算符例如:i=3i=3jj=++i 4 4j=i++43j=--i22j=i--23自增運(yùn)算符和自減運(yùn)算符#include<stdio.h>intmain(void){intx=100;printf(“%d,%d,%d,%d\n”,x++,x,--x,x);printf(“%d\n”,x);return(0);}/*printf的輸出表列運(yùn)算是自右至左*/

運(yùn)行結(jié)果:99,99,99,100100逗號運(yùn)算符及其表達(dá)式逗號運(yùn)算符優(yōu)先級最低,結(jié)合性是自左至右格式:<表達(dá)式1>,<表達(dá)式2>,…<表達(dá)式n>先計(jì)算<表達(dá)式1>的值,再計(jì)算<表達(dá)式2>的值,……而逗號表達(dá)式值是最后一個(gè)<表達(dá)式n>的值。逗號運(yùn)算符及其表達(dá)式#include<stdio.h>intmain(void){inta,b,c;a=1,b=2,c=3;printf(“%d,%d,%d\n”,a,b,c);printf(“%d,%d,%d\n”,(a,b,c),b,c);a=(c=0,c+5);b=(c=10,c+8);printf(“%d,%d,%d\n”,a,b,c);return(0);}該處a,b,c不是逗號表達(dá)式,是printf函數(shù)的參數(shù)(a,b,c)是逗號表達(dá)式運(yùn)行結(jié)果:1,2,33,2,35,18,10逗號運(yùn)算符及其表達(dá)式#include<stdio.h>intmain(void){inta,b=1,x,y;x=(a=3,6*b); y=a=3,6*b; printf("X=%d\tY=%d\n",x,y);return(0);}運(yùn)行結(jié)果:X=6 Y=3位運(yùn)算位運(yùn)算是對計(jì)算機(jī)硬件存儲器進(jìn)行直接操作的運(yùn)算符。位運(yùn)算是對二進(jìn)制位進(jìn)行操作的運(yùn)算符。位運(yùn)算的操作對象只能是各種整型(char、int、unsinged、long)數(shù)據(jù)。(1)位與(&)運(yùn)算 x=01010101 & y=01011010 01010000

即x&y=0x50(2)位或(|)運(yùn)算 x=01010101 | y=01011010 01011111

即x&y=0x5f(3)位異或(^)運(yùn)算 x=01010101 ^ y=01011010 00001111

即x^y=0x0f(4)位反(~)運(yùn)算

~ y=01011010 10100101

即~y=0xa5位運(yùn)算移位運(yùn)算(1)左移位(<<) x=01011010<<2 01101000

即x<<2=0x68(2)右移位(>>) x=01011010>>4

00000101

即x>>4=0x05位運(yùn)算位賦值運(yùn)算位運(yùn)算與賦值運(yùn)算組成復(fù)合的位賦值運(yùn)算。 &= 位與賦值 a&=b a=a&b |= 位或賦值 a|=b a=a|b ^= 位異或賦值 a^=b a=a^b >>= 右移賦值 a>>=b a=a>>b <<= 左移賦值 a<<=b a=a<<b條件運(yùn)算符及其表達(dá)式例:鍵入三個(gè)整數(shù),輸出最大數(shù)。#include<stdio.h>intmain(void){inta,b,c,max;scanf(“%d,%d,%d”,&a,&b,&c);max=(a>b)?a:b;max=(max>c)?max:c;

printf(“max=%d\n”,max);return(0);}求長度運(yùn)算符sizeof#include<stdio.h>intmain(void){inta,b,c,d;a=sizeof(d); b=sizeof(float);c=sizeof(char); printf("A=%d,B=%d,C=%d\n",a,b,c);return(0);}運(yùn)行結(jié)果:A=4,B=4,C=1printf函數(shù)(格式輸出函數(shù))格式:printf(格式控制,輸出表列)功能:首先計(jì)算各表達(dá)式的值(自右向左),各表達(dá)式的值按格式控制串的格式,輸出在屏幕上;非格式控制符照原樣輸出。#include<stdio.h>intmain(void){inta=8086;floatb=2000.0521;printf(“a=%3d\n”,a);printf(“a=%5d\n”,a);printf(“a=%10d\n”,a);printf(“b=%7.2f\n”,b);printf(“b=%-10.4f\n”,b);printf(“b=%f\n”,b);printf(“b=%e\n”,b);return(0);}運(yùn)行結(jié)果:

a=8086a=8086a=8086b=2000.05b=2000.0521_b=2000.052100b=2.000052e+003printf函數(shù)(格式輸出函數(shù))#include<stdio.h>intmain(void){charc1=‘*’;printf(“%c%5c\n”,c1,c1);printf(“%2c%3c\n”,c1,c1);printf(“%3c%c\n”,c1,c1);return(0);}運(yùn)行結(jié)果:******printf函數(shù)(格式輸出函數(shù))#include<stdio.h>intmain(void){printf(“%-10.5s\n”,”CHINAABC”);printf(“%10.5s\n”,”CHINAABC”);printf(“%5s\n”,”CHINAABC”);/*域?qū)捫?字串照原樣輸出*/return(0);}運(yùn)行結(jié)果:

CHINACHINACHINAABCscanf函數(shù)(格式輸入函數(shù))格式:scanf(格式控制,地址表列)功能:等待從鍵盤按格式控制串的格式輸入相應(yīng)類型的多個(gè)數(shù)據(jù),并將這些數(shù)據(jù)依次賦給相應(yīng)變量;非格式控制符應(yīng)照原樣輸入。

scanf函數(shù)(格式輸入函數(shù))#include<st

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論