




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章基本數(shù)據(jù)類型及運(yùn)算本章內(nèi)容2.1c語(yǔ)言的發(fā)展與特點(diǎn)2.2c程序概述2.3c程序上機(jī)過程2.4常量和變量2.5數(shù)據(jù)類型2.6運(yùn)算符與表達(dá)式2.7輸入輸出簡(jiǎn)介C語(yǔ)言是貝爾實(shí)驗(yàn)室為DEC公司開發(fā)PDP系列計(jì)算機(jī)操作系統(tǒng)時(shí)研制的。C作為UNIX操作系統(tǒng)的開發(fā)語(yǔ)言而廣為應(yīng)用和流行。1989年制定為ANSIC標(biāo)準(zhǔn)。c語(yǔ)言的發(fā)展與特點(diǎn)
CPL語(yǔ)言:劍橋大學(xué),1963年BCPL語(yǔ)言:劍橋大學(xué),1967年B語(yǔ)言:Bell實(shí)驗(yàn)室,1970年C語(yǔ)言:Bell實(shí)驗(yàn)室,1972年4123C語(yǔ)言的特點(diǎn)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活32個(gè)關(guān)鍵字、9種控制語(yǔ)句,程序形式自由運(yùn)算符豐富34種運(yùn)算符數(shù)據(jù)類型豐富整型、浮點(diǎn)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算。介于高級(jí)語(yǔ)言與匯編語(yǔ)言之間允許對(duì)計(jì)算機(jī)硬件進(jìn)行操作:位操作、地址操作等C語(yǔ)言是完全模塊化和結(jié)構(gòu)化的語(yǔ)言。函數(shù)作為程序的模塊單位結(jié)構(gòu)化的控制語(yǔ)句:if…else,while,for,switch語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大生產(chǎn)目標(biāo)代碼質(zhì)量高比匯編低10%~20%可移植性較高C語(yǔ)言的特點(diǎn)C語(yǔ)言的特點(diǎn)C語(yǔ)言的特點(diǎn)圖形處理影音編輯操作系統(tǒng)辦公軟件網(wǎng)絡(luò)軟件游戲軟件科學(xué)計(jì)算自動(dòng)控制#include<stdio.h>void
main(){
printf("ThisisaCprogram.\n");}/*文件包含*//*主函數(shù)*//*函數(shù)體開始*//*函數(shù)輸出語(yǔ)句*//*函數(shù)體結(jié)束*/
說明:main-主函數(shù)名,void-函數(shù)類型每個(gè)C程序必須有一個(gè)主函數(shù)main{}是函數(shù)開始和結(jié)束的標(biāo)志,不可省每個(gè)C語(yǔ)句以分號(hào)結(jié)束使用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)應(yīng)在程序開頭一行寫:
#include<stdio.h>說明:本程序的作用是輸出:ThisisaCprogram.c程序概述c程序概述例1.2:求兩個(gè)整數(shù)之和#include<stdio.h>voidmain(){inta,b,sum;/*這是定義變量*/a=123;b=456;sum=a+b;printf(“Sumis%d\n”,sum);}說明:
/*……*/表示注釋。注釋只是給人看的,對(duì)編譯和運(yùn)行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行。例1.3求2個(gè)數(shù)中較大者。
#include<stdio.h>
voidmain() /*主函數(shù)*/
{
intmax(intx,inty);/*對(duì)被調(diào)用函數(shù)max的聲明*/
inta,b,c;/*定義變量a、b、c*/
scanf(″%d,%d″,&a,&b);/*輸入變量a和b的值*/
c=max(a,b); /*調(diào)用max函數(shù),將得到的值賦給c*/
printf(″max=%d\\n″,c);/*輸出c的值*/
}程序運(yùn)行情況如下:8,5↙(輸入8和5賦給a和b)max=8(輸出c的值)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}max(int
x,
int
y)
max(a,b);
說明:本程序包括main和被調(diào)用函數(shù)max兩個(gè)函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語(yǔ)句將z的值返回給主調(diào)函數(shù)main。c程序概述C程序特點(diǎn)函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,函數(shù)體由變量聲明部分和執(zhí)行部分組成,執(zhí)行部分必須在聲明部分后面。函數(shù)定義的一般格式為: 函數(shù)類型函數(shù)名(形參類型1形參1,形參類型2形參2){ 聲明部分 執(zhí)行部分}c程序概述程序的執(zhí)行是從主函數(shù)開始到主函數(shù)結(jié)束,其它函數(shù)的執(zhí)行是通過函數(shù)調(diào)用實(shí)現(xiàn)的書寫格式自由。一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分幾行書寫每個(gè)C語(yǔ)句以分號(hào)“;”結(jié)束,分號(hào)是語(yǔ)句的組成部分C程序中的輸入與輸出是通過函數(shù)實(shí)現(xiàn)程序中包含在/*與*/之間的一段內(nèi)容為注釋,其作用是供理解程序用。C++中可用//注釋一行文字編譯錯(cuò)連接編輯編譯運(yùn)行連接錯(cuò)運(yùn)行錯(cuò)YYYNNN完成#include文件C++庫(kù)文件×××.CPP源程序×××.obj目標(biāo)程序×××.exe可執(zhí)行程序#include文件程序開發(fā)過程c程序上機(jī)過程VisualC++6.0環(huán)境開發(fā)C程序的過程如下:1.建立工程項(xiàng)目2.向工程項(xiàng)目中添加新文件3.編輯源代碼4.編譯和鏈接5.運(yùn)行程序VC++6.0環(huán)境下C程序開發(fā)在編譯C源文件之前,需要?jiǎng)?chuàng)建一個(gè)工程項(xiàng)目選擇“文件”菜單項(xiàng),出現(xiàn)下拉菜單,選擇“新建”選項(xiàng),則出現(xiàn)“新建”對(duì)話框VC++6.0環(huán)境下C程序開發(fā)選擇“工程”標(biāo)簽,在左邊的列表框中單擊“Win32ConsoleApplication”選項(xiàng),在右邊的“工程”下方的編輯框中輸入一個(gè)名字如first作為項(xiàng)目的名稱單擊“位置”下方的按鈕,來選擇項(xiàng)目存放的位置然后單擊“確定”按鈕,出現(xiàn)一個(gè)對(duì)話框在對(duì)話框中,單擊“Anemptyproject”選項(xiàng),然后單擊“完成”按鈕,一個(gè)空項(xiàng)目就創(chuàng)建好了VC++6.0環(huán)境下C程序開發(fā)VC++6.0環(huán)境下C程序開發(fā)系統(tǒng)創(chuàng)建了一個(gè)名稱為“first”的文件夾,文件夾中創(chuàng)建了3個(gè)文件,一個(gè)子目錄VC++6.0環(huán)境下C程序開發(fā)后綴名為“.dsp”的是項(xiàng)目文件,保存項(xiàng)目設(shè)置,它維護(hù)所有源代碼文件,以及VC++如何編譯、連接應(yīng)用程序,以便創(chuàng)建可執(zhí)行程序后綴名為“.dsw”的是項(xiàng)目工作區(qū)文件,保存項(xiàng)目工作區(qū)的設(shè)置VC++6.0環(huán)境下C程序開發(fā)項(xiàng)目創(chuàng)建后,選擇主菜單中的“工程”選項(xiàng),在出現(xiàn)的下拉菜單中選擇“添加工程”選項(xiàng),如圖:VC++6.0環(huán)境下C程序開發(fā)再選擇“新建”選項(xiàng),則出現(xiàn)“新建”文件對(duì)話框VC++6.0環(huán)境下C程序開發(fā)在對(duì)話框左邊的列表框中選擇“C++SourceFile”選項(xiàng),在右邊“文件”下方的編輯框中輸入一個(gè)名字如“first.c”,然后單擊“確定”,則系統(tǒng)為你創(chuàng)建了一個(gè)first.c文件VC++6.0環(huán)境下C程序開發(fā)VC++6.0環(huán)境下C程序開發(fā)在代碼編輯區(qū)中可以輸入源程序了VC++6.0環(huán)境下C程序開發(fā)選擇編譯菜單下的“構(gòu)建first.exe”選項(xiàng),或單擊工具欄中的按鈕,則系統(tǒng)開始對(duì)first.c文件進(jìn)行編譯,然后鏈接如果源代碼沒有錯(cuò)誤,則生成first.exe文件,否則在輸出窗口顯示出相應(yīng)的錯(cuò)誤信息。如果有錯(cuò)誤,則修改錯(cuò)誤,然后重新編譯鏈接,直到?jīng)]有錯(cuò)誤為止VC++6.0環(huán)境下C程序開發(fā)選擇編譯菜單下的“執(zhí)行first.exe”菜單,或單擊工具欄中的按鈕,則程序執(zhí)行,出現(xiàn)如圖窗口,表示運(yùn)行成功另一種運(yùn)行C程序的步驟和方法1、雙擊“我的電腦”,在E盤上建立自己的目錄。如:E>按右鍵->新建->文件夾;(之后返回桌面)2、在桌面,雙擊VisualC++6.0圖標(biāo),進(jìn)入VC++6.0集成環(huán)境;3、選擇“文件->新建->文件->c++sourcefile,并在右側(cè)框中輸入“文件名”,修改“位置[c]”為你自己的子目錄,進(jìn)入到C程序環(huán)境;4、編輯C源程序,要求程序格式正確;5、點(diǎn)擊“保存”按鈕,將源程序存盤;6、點(diǎn)擊運(yùn)行按鈕,運(yùn)行程序(一個(gè)紅色感嘆號(hào));7、發(fā)現(xiàn)錯(cuò)誤時(shí),雙擊錯(cuò)誤指示,光標(biāo)將指向錯(cuò)誤,修改后轉(zhuǎn)到5。C語(yǔ)言數(shù)據(jù)類型例2.1:圓的半徑為5cm,計(jì)算圓的面積并輸出#include<stdio.h>voidmain(){ floatr,area; r=5; area=3.14*r*r; printf("%f\n",area);}程序中的數(shù)據(jù):r、area
5、3.14對(duì)數(shù)據(jù)的運(yùn)算:*、=C語(yǔ)言數(shù)據(jù)類型計(jì)算機(jī)在操作處理時(shí),要完成以下工作:在內(nèi)存中要給半徑r和面積area
開辟存儲(chǔ)空間,存放它們的值。應(yīng)該留多大的地方來存放其值?數(shù)據(jù)
5
和3.14
與r、area
不同,它們是在編寫程序時(shí)就給出確定的值,在運(yùn)算過程中不會(huì)改變。這樣的數(shù)計(jì)算機(jī)怎么處理?對(duì)整數(shù)5
和小數(shù)3.14,存放時(shí)是否有區(qū)別?涉及數(shù)據(jù)類型的基本知識(shí)C語(yǔ)言數(shù)據(jù)類型C語(yǔ)言數(shù)據(jù)類型數(shù)組類型結(jié)構(gòu)體類型共用體類型枚舉類型整型字符型實(shí)型(浮點(diǎn)型)基本類型指針類型構(gòu)造類型空類型單精度型雙精度型
C語(yǔ)言數(shù)據(jù)類型數(shù)據(jù)類型結(jié)構(gòu)體共用體數(shù)組枚舉指針intcharfloatdoublevoid基本字符C程序是基本字符的序列?;咀址ǎ簲?shù)字(0~9)大小寫字母(a~z,A~Z)標(biāo)點(diǎn)符號(hào)特殊字符:空格、換行、制表符等,起分隔的作用。增刪空白一般不影響程序的意義標(biāo)識(shí)符(狹義)標(biāo)識(shí)符是一個(gè)字符序列,用來標(biāo)識(shí)程序中用到的常量、變量、函數(shù)、數(shù)組、語(yǔ)句標(biāo)號(hào)以及符號(hào)常量等的名稱。標(biāo)識(shí)符應(yīng)滿足以下規(guī)則:只能由字母、下劃線和數(shù)字組成第一個(gè)字符不能是數(shù)字標(biāo)識(shí)符中的字母區(qū)別大小寫不能使用C語(yǔ)言的關(guān)鍵字關(guān)鍵字:C語(yǔ)言規(guī)定的具有特定意義的字符串,通常也稱保留字(小寫字母)。標(biāo)識(shí)數(shù)據(jù)類型(14個(gè)):int、long、char、float、double等標(biāo)識(shí)存儲(chǔ)類型(5個(gè)):auto、static、register等標(biāo)識(shí)流程控制(12個(gè)):goto、break、if、else、continue等標(biāo)識(shí)運(yùn)算符(1個(gè)):sizeof關(guān)鍵字基本數(shù)據(jù)類型整型int整數(shù),在目前絕大多數(shù)機(jī)器上占4個(gè)字節(jié)單精度實(shí)型float單精度浮點(diǎn)數(shù),一般是4個(gè)字節(jié)長(zhǎng)雙精度實(shí)型double雙精度浮點(diǎn)數(shù),一般是8個(gè)字節(jié)長(zhǎng)基本數(shù)據(jù)類型字符型char字符,一般是1個(gè)字節(jié)長(zhǎng),用來表示256個(gè)ASCII字符,或者0~255的整數(shù)'A'----65'a'----97''----32'0'----48常見字符的ASCII碼基本數(shù)據(jù)類型在基本數(shù)據(jù)類型之前都可以加各種類型修飾符shortshortint,短整數(shù),一般2個(gè)字節(jié),簡(jiǎn)寫shortlonglongint,長(zhǎng)整數(shù),一般4個(gè)字節(jié),簡(jiǎn)寫longlongdouble,長(zhǎng)雙精度浮點(diǎn)數(shù),一般10個(gè)字節(jié)基本數(shù)據(jù)類型signed用來修飾char、int、short和long,說明他們是有符號(hào)的整數(shù)(正整數(shù)、0和負(fù)整數(shù))。一般缺省都是有符號(hào)的,所以這個(gè)修飾符通常省略u(píng)nsigned用來修飾char、int、short和long,說明他們是無符號(hào)的整數(shù)(正整數(shù)和0)基本數(shù)據(jù)類型占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字short≤int≤long可用下面運(yùn)算測(cè)量:sizeof(數(shù)據(jù)或數(shù)據(jù)類型符或變量名)求出的結(jié)果為表達(dá)式值所屬類型或者類型占用的字節(jié)數(shù)C語(yǔ)言數(shù)據(jù)類型例2.2:基本數(shù)據(jù)類型占用字節(jié)數(shù)#include<stdio.h>voidmain(){printf("char%d\n",sizeof(char));printf("short%d\n",sizeof(short));printf("int%d\n",sizeof(int));printf("long%d\n",sizeof(long));printf("float%d\n",sizeof(float));
printf("double%d\n",sizeof(double));}基本數(shù)據(jù)類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式字符型:ASCII碼值整型:二進(jìn)制補(bǔ)碼實(shí)型:浮點(diǎn)數(shù)指數(shù)形式N=S×2j階碼符號(hào)階碼的數(shù)值尾數(shù)符號(hào)尾數(shù)的數(shù)值階碼j尾數(shù)S常量常量:在程序的執(zhí)行過程中,其值不發(fā)生改變的量,在C程序中可以不經(jīng)說明而直接引用常量的分類:整型常量實(shí)型常量字符常量字符串常量符號(hào)常量整型常量整型常量即整常數(shù)十進(jìn)制:0~9,無前綴八進(jìn)制:0~7,以0作為前綴十六進(jìn)制:0~9,A~F或a~f,以0x或0X為前綴例如:100-80+12301002401000730x380x100x0a0X100XFF注意:十六進(jìn)制常量中可以使用大寫字母A~F,也可以使用小寫字母a~f。八進(jìn)制常量中不能出現(xiàn)數(shù)字8或9例如:018、0921非法#include<stdio.h>voidmain(){printf(“十六進(jìn)制數(shù)0x10=十進(jìn)制數(shù)%d\n",0x10);printf(“八進(jìn)制數(shù)010=十進(jìn)制數(shù)%d\n",010);}整型常量整型常量的取值類型默認(rèn)類型為有符號(hào)基本整型整型常量后面加u或U,則認(rèn)為是無符號(hào)整型(unsignedint)整型常量后面加l或L,則認(rèn)為是長(zhǎng)整型(longint)例如:123U、345u、432L、200l實(shí)型常量實(shí)型(浮點(diǎn)型)常量的表示方法十進(jìn)制小數(shù)形式:1.00.15+12.0-12.00.0指數(shù)形式:aEn或aen1e31.8e-3-123E-6-0.1E-31×1031.8×10-3-123×10-6-0.1×10-3float型常量:123.45f、456.78Flongdouble型常量:123.45l、456.78L缺省為double說明:指數(shù)只能是整數(shù),而小數(shù)部分(尾數(shù))則可以是整數(shù)也可以是小數(shù),無論指數(shù)或尾數(shù)均不能省略例如:1e、E.5、E-3
非法實(shí)型常量的類型:默認(rèn)為double型(8個(gè)字節(jié)),后面加F(或f),則強(qiáng)調(diào)表示該數(shù)是float類型(4個(gè)字節(jié))例如:3.5f、1e2F
字符常量字符常量用一對(duì)單引號(hào)括起來的單個(gè)可視字符例如:’a’、’A’、’+’、’3’、’’等字符常量只能是單個(gè)字符,不能是字符串;字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其它括號(hào);字符常量用char表示,分配1Byte存儲(chǔ)單元例如’a’是一個(gè)char類型數(shù)據(jù),稱作字符常量01100001字符常量轉(zhuǎn)義字符常量單引號(hào)括起來的
\與可視字符組合,例如:轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義\\反斜線\n
換行,將當(dāng)前位置移到下一行開頭\’單引號(hào)\r
回車,將當(dāng)前位置移到本行開頭\”雙引號(hào)\b
退格,將當(dāng)前位置移到前一列\(zhòng)a響鈴\t水平跳格,跳到下一個(gè)Tab位置\f換頁(yè)\bbb3位8進(jìn)制數(shù)代表的ASCII碼字符\0空字符\xhh2位16進(jìn)制數(shù)表示的ASCII碼字符字符串常量字符串常量是用雙引號(hào)括起的一個(gè)字符序列例如:"ABC"、"123"、"a"、"\n\t“"\nGoodmorning"字符串常量的長(zhǎng)度:所包含的字符個(gè)數(shù)字符串所占存儲(chǔ)單元數(shù):字符串長(zhǎng)度+1\nGoodmorning\0a\0字符串結(jié)束標(biāo)記符號(hào)常量符號(hào)常量:用標(biāo)識(shí)符來表示的常量需要事先定義:#define標(biāo)識(shí)符常量編譯時(shí)先由系統(tǒng)替換為它所代表的常量符號(hào)常量名習(xí)慣用大寫字母表示使用符號(hào)常量的好處是:1.含義清楚2.在需要改變一個(gè)常量時(shí)能做到“一改全改”C語(yǔ)言數(shù)據(jù)類型例2.3:圓的半徑為5cm,計(jì)算圓的面積并輸出#include<stdio.h>#definePI3.14159voidmain(){ floatr,area; r=5; area=PI*r*r; printf("area=%f\n",area);}
符號(hào)常量
#definePRICE
30#include<stdio.h>voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d\n",total);}定義符號(hào)常量使用符號(hào)常量注意:符號(hào)常量必須先定義后才能用它表示一個(gè)數(shù)值。符號(hào)常量的值在其作用域內(nèi)不能改變,也不能再被賦值。變量變量:在程序執(zhí)行過程中其值發(fā)生改變的數(shù)據(jù)變量用標(biāo)識(shí)符表示,稱為變量名。變量三要素:變量名、變量值、存儲(chǔ)單元變量必須先定義,后使用存儲(chǔ)單元的地址使用&獲取a510變量值a=510存儲(chǔ)單元
&a變量名a變量定義變量的一般形式:類型說明符變量1,變量2,…,變量n;例如:inta,b,c;charc1,c2;選變量名時(shí),要做到見名知意例如:nameagesummax變量名習(xí)慣用小寫字母表示整型變量有符號(hào)整型變量類型,為缺省變量類型,可以省略修飾符signed基本型int,占4個(gè)字節(jié)(32位)長(zhǎng)整型longint,占4個(gè)字節(jié)(32位)短整型shortint,占2個(gè)字節(jié)(16位)整型變量無符號(hào)整型變量類型,類型修飾符為unsigned基本型:unsignedint或unsigned,占4個(gè)字節(jié)長(zhǎng)整型:unsignedlong,占4個(gè)字節(jié)短整型:unsignedshort,占2個(gè)字節(jié)整型變量一個(gè)shortint型變量的最大允許值為:32767,如果再加1,則結(jié)果會(huì)變成-32768a=327670111111111111111
b=-32768
1
000000000000000整型變量最高位是符號(hào)位還是數(shù)據(jù)位的區(qū)別
a=-11111111111111111
b=65535
1111111111111111整型變量例2.4:整型變量的溢出#include<stdio.h>voidmain(){shortinta,b;a=32767;b=a+1;printf(”%d,%d\n”,a,b);}實(shí)型變量實(shí)型變量的類型單精度實(shí)型:float,占4個(gè)字節(jié)雙精度實(shí)型:double,占8個(gè)字節(jié)長(zhǎng)雙精度實(shí)型:longdouble
,占16個(gè)字節(jié)變量類型類型符Byte數(shù)值范圍有效數(shù)字單精度實(shí)型float4-3.4*10-37~3.4*10387~8
位雙精度實(shí)型double8-1.7*10-307~1.7*1030815~16位長(zhǎng)雙精度實(shí)型longdouble16-1.2*10-4932~1.2*10493218~19位實(shí)型變量由于實(shí)型變量是用有限的存儲(chǔ)單元存儲(chǔ)的,因此能提供的有效數(shù)字總是有限的,在有效位以外的數(shù)字將被舍去,由此可能會(huì)產(chǎn)生一些誤差實(shí)型變量例:實(shí)型變量有效數(shù)字的意義#include<stdio.h>voidmain(){floata,b;a=123456.789e5;b=a+20.0f;printf(“a=%f\nb=%f\n”,a,b);}實(shí)型變量實(shí)型變量只能保證7位有效數(shù)字,后面數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)因此應(yīng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)字符變量字符變量定義形式:char標(biāo)識(shí)符1,標(biāo)識(shí)符2,…,標(biāo)識(shí)符n;例如:charc1,c2;charc1=’a’,c2=’b’;字符變量說明:1.字符變量在內(nèi)存中占一個(gè)字節(jié)2.內(nèi)存存放的是字符的ASCII碼值3.字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用4.字符型變量用來存儲(chǔ)字符型常量字符變量例:一個(gè)字符變量可以字符或整數(shù)形式輸出#include<stdio.h>voidmain(){charc1,c2;c1=97;c2=98;printf(”%c%c\n”,c1,c2);printf(”%d%d\n”,c1,c2);}字符變量例:字符變量算術(shù)運(yùn)算,如字母大小寫轉(zhuǎn)換#include<stdio.h>voidmain(){charc1=‘x’,c2=‘y’;c1=c1-32;c2=c2-32;printf(“c1=%c,c2=%c\n”,c1,c2);printf(“c1=%d,c2=%d\n”,c1,c2);}C語(yǔ)言運(yùn)算符與表達(dá)式用來表示各種運(yùn)算的符號(hào)稱為運(yùn)算符只需一個(gè)運(yùn)算對(duì)象的運(yùn)算符,稱為單目運(yùn)算符;有的需要兩個(gè),稱為雙目運(yùn)算符;最多需要3個(gè),稱為三目運(yùn)算符用運(yùn)算符把運(yùn)算對(duì)象連接在一起組成的式子,稱為表達(dá)式每種表達(dá)式按照運(yùn)算符的運(yùn)算規(guī)則進(jìn)行運(yùn)算,最終都會(huì)得到一個(gè)結(jié)果,稱為表達(dá)式的值C語(yǔ)言運(yùn)算符與表達(dá)式表達(dá)式中有多個(gè)運(yùn)算符時(shí),先做哪個(gè)運(yùn)算,后做哪個(gè)運(yùn)算,必須遵循一定的規(guī)則,這種運(yùn)算符執(zhí)行的先后順序,稱為運(yùn)算符的優(yōu)先級(jí)。圓括號(hào)能改變運(yùn)算的執(zhí)行順序?qū)τ趦?yōu)先級(jí)相同的運(yùn)算符,將由其結(jié)合性來決定運(yùn)算順序。C語(yǔ)言中有兩種結(jié)合性:所謂左結(jié)合,是自左向右的,意即由左向右遇到誰就先做誰;所謂右結(jié)合,是自右向左的,意即由右向左遇到誰就先做誰C語(yǔ)言運(yùn)算符與表達(dá)式類型符運(yùn)算符算術(shù)運(yùn)算符+-*/%++---賦值運(yùn)算符=關(guān)系運(yùn)算符><>=<===!=邏輯運(yùn)算符&&||!位運(yùn)算符&|^~<<>>條件運(yùn)算符?:逗號(hào)運(yùn)算符,其他運(yùn)算符&sizeof(數(shù)據(jù)類型標(biāo)識(shí)符)算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符分為基本算術(shù)運(yùn)算符正負(fù)號(hào)運(yùn)算符和自增/自減運(yùn)算符運(yùn)算符++--+-+-*/%名稱自加自減正負(fù)加減乘除求余說明單目、右結(jié)合雙目、左結(jié)合算術(shù)運(yùn)算符和算術(shù)表達(dá)式基本算術(shù)運(yùn)算符:+-*/%兩個(gè)整數(shù)進(jìn)行算術(shù)運(yùn)算結(jié)果還是整數(shù)整除:5/3=1取余:-5%3=-2余數(shù)符號(hào)與被除數(shù)相同C中沒有乘方運(yùn)算符,要計(jì)算a3要寫作a*a*a,或者用標(biāo)準(zhǔn)庫(kù)函數(shù)pow(a,3)算術(shù)運(yùn)算符和算術(shù)表達(dá)式自增、自減運(yùn)算符:++--前綴形式:先自增(自減)再引用++aa=a+1--aa=a-1后綴形式:先引用再自增(自減)a++a=a+1a--a=a-1算術(shù)運(yùn)算符和算術(shù)表達(dá)式自增、自減運(yùn)算符:++--在自增、自減運(yùn)算符與賦值運(yùn)算符同時(shí)使用時(shí),前綴形式與后綴形式是有區(qū)別的1.b=++aa=a+1;b=a2.b=a++b=a;a=a+13.b=--aa=a-1;b=a4.b=a--b=a;a=a-1算術(shù)運(yùn)算符和算術(shù)表達(dá)式例2.8:計(jì)算自增運(yùn)算符++a、a++的值#include<stdio.h>voidmain(){inta=5;intb;b=++a
;printf(“a=%d,b=%d\n”,a,b);b=a++;printf(“a=%d,b=%d\n”,a,b);}算術(shù)運(yùn)算符和算術(shù)表達(dá)式例2.10:計(jì)算自減運(yùn)算符--a、a--的值#include<stdio.h>voidmain(){inta=5;intb;b=--a;printf(“a=%d,b=%d\n”,a,b);b=a--;printf(“a=%d,b=%d\n”,a,b);}算術(shù)運(yùn)算符和算術(shù)表達(dá)式自增、自減運(yùn)算符:++--操作數(shù)只能是變量,不能是常量和表達(dá)式例如:5++、(a+b)++不合法具有右結(jié)合性,結(jié)合方向?yàn)閺挠业阶罄纾酣Ca++-(a++)不推薦寫這樣的表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式用算術(shù)運(yùn)算符將數(shù)值數(shù)據(jù)連接起來的有意義的式子稱為算術(shù)表達(dá)式乘號(hào)*不能省略。例如:數(shù)學(xué)式b2-4ac應(yīng)該寫成:b*b-4*a*c只使用圓括號(hào)改變運(yùn)算的優(yōu)先順序賦值運(yùn)算符和賦值表達(dá)式簡(jiǎn)單賦值運(yùn)算符:=形式:變量名=常量或表達(dá)式作用:將右邊常量或表達(dá)式的值賦給左邊變量
=左邊必須是變量,右邊是任意合法表達(dá)式例如:n=t+2<s合法a+b=15不合法賦值號(hào)與數(shù)學(xué)中的等號(hào)含義不同數(shù)學(xué)a=b等價(jià)于b=aC語(yǔ)言a=b不等價(jià)于b=a賦值運(yùn)算符和賦值表達(dá)式賦值操作會(huì)發(fā)生類型轉(zhuǎn)換:將取值范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的將實(shí)型賦給整型,舍去小數(shù)部分將整型賦給實(shí)型,小數(shù)部分自動(dòng)補(bǔ)0將字符型賦給整型,將字符的8位,放在整型的低8位,其余各位補(bǔ)零將int、short、long型賦給char型,只將其低8位原封不動(dòng)地送到char型中賦值運(yùn)算符和賦值表達(dá)式復(fù)合賦值運(yùn)算符+=-=*=/=%=
(復(fù)合算術(shù)運(yùn)算符)&=|=^=>>=<<=
(復(fù)合位運(yùn)算符)例如:a+=3a=a+3;x*=y+3x=x*(y+3)邏輯運(yùn)算符和邏輯表達(dá)式C語(yǔ)言的邏輯運(yùn)算符及其含義!a當(dāng)且僅當(dāng)a為真時(shí),!a為假a&&b當(dāng)且僅當(dāng)
a、b同真時(shí),a&&b為真a||b當(dāng)且僅當(dāng)a、b之一為真時(shí),a||b為真名稱運(yùn)算符說明含義邏輯非!單目,左結(jié)合真為“假”,假為“真”邏輯與&&雙目,左結(jié)合左右都成立才為“真”邏輯或||雙目,左結(jié)合左右有一個(gè)為真時(shí)就為“真”邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算規(guī)則在判斷一個(gè)邏輯量時(shí),以0為假,非0數(shù)值為真在給出邏輯運(yùn)算值時(shí),以1為真,以0為假ab!a!ba&&ba||b110011100101011001001100邏輯運(yùn)算符和邏輯表達(dá)式
任何值與0相與(&&),結(jié)果為0對(duì)于&&運(yùn)算符,只要左邊的運(yùn)算對(duì)象為假,則整個(gè)表達(dá)式肯定取值“假”(數(shù)值0),C編譯程序不再對(duì)右邊的運(yùn)算對(duì)象進(jìn)行求值
任何值與1相或(||),結(jié)果為1對(duì)于||運(yùn)算符,只要左邊的運(yùn)算對(duì)象為真,則整個(gè)表達(dá)式肯定取值“真”(數(shù)值1),C編譯程序不再對(duì)右邊的運(yùn)算對(duì)象進(jìn)行求值邏輯運(yùn)算符和邏輯表達(dá)式例2.11:邏輯表達(dá)式的計(jì)算#include<stdio.h>voidmain(){intx,m,n,a,b;m=n=a=b=10;x=(m=a>b)&&(n=a>b);printf("x=%d,m=%d,n=%d\n",x,m,n);}邏輯運(yùn)算符和邏輯表達(dá)式邏輯恒等式:e!=0
e1!=010!=003!=03關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符:
<(小于),<=(小于或等于)>(大于),>=(大于或等于)==(等于),!=(不等于)
雙目、左結(jié)合關(guān)系運(yùn)算符和關(guān)系表達(dá)式所謂關(guān)系表達(dá)式是指用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(算術(shù)表達(dá)式、關(guān)系表達(dá)式等)連接起來,進(jìn)行關(guān)系運(yùn)算的式子如:(a>b)>(b<c)、‘a(chǎn)’==‘b’、(x+z)>=y關(guān)系表達(dá)式的值:邏輯值1---“真”,0----“假”關(guān)系運(yùn)算符和關(guān)系表達(dá)式要特別區(qū)分符號(hào)“==”和符號(hào)“=”符號(hào)“==”是關(guān)系運(yùn)算符,表示檢驗(yàn)左右兩個(gè)量之間是否具有“等于、相等”的關(guān)系符號(hào)“=”是賦值運(yùn)算符,表示把右邊的表達(dá)式值賦給左邊的變量應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0結(jié)果為0可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-6條件運(yùn)算符和條件表達(dá)式條件運(yùn)算符:?:格式:表達(dá)式1?表達(dá)式2:表達(dá)式3其中,<表達(dá)式1>是一個(gè)邏輯表達(dá)式,<表達(dá)式2>和<表達(dá)式3>的類型必須相同該條件表達(dá)式是先計(jì)算<表達(dá)式1>的值,若值為真,則以<表達(dá)式2>的值作為自己的值;若其值為假,則以<表達(dá)式3>的值作為自己的值條件運(yùn)算符和條件表達(dá)式例2.12:求最大值#include<stdio.h>voidmain(){intmax,a=5,b=9;max=(a>b)?a:b;printf(“max=%d\n”,max);}逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式所謂逗號(hào)運(yùn)算符,就是把逗號(hào)作為運(yùn)算符,把若干個(gè)表達(dá)式連接在一起。這樣構(gòu)成的表達(dá)式的整體,稱為逗號(hào)表達(dá)式格式:表達(dá)式1,表達(dá)式2,……,表達(dá)式n從左向右,依次對(duì)表達(dá)式求值,最后得到表達(dá)式n的值就是逗號(hào)表達(dá)式的值a=5,a++,a*3表達(dá)式值為18,且a=6x=(a=3*5,a*4)表達(dá)式值為60,且x=60,a=15運(yùn)算符優(yōu)先級(jí)簡(jiǎn)稱含義運(yùn)算符數(shù)目結(jié)合單單目++--!單目←算算術(shù)*/%雙目→+-雙目→關(guān)關(guān)系>>=<<=雙目→==!=雙目→邏邏輯&&雙目→||雙目→條條件?:三目←賦賦值=-=*=/=%=雙目←逗逗號(hào),
→運(yùn)算符的結(jié)合性單目、條件和賦值運(yùn)算符具有右結(jié)合性,如:?jiǎn)文窟\(yùn)算符:!a++!(a++)條件運(yùn)算符:a?b:c?d:e
a?b:(c?d:e)賦值運(yùn)算符:a=b=c
a=(b=c)其它運(yùn)算符左結(jié)合,如:算術(shù)運(yùn)算符:a+b-c(a+b)-c輸入輸出函數(shù)標(biāo)準(zhǔn)輸入輸出函數(shù)都包含在頭文件stdio.h中#include“stdio.h”或#include<stdio.h>格式輸入輸出函數(shù)格式輸出函數(shù)printf()printf(<格式控制字符串>,<輸出變量列表>);<格式控制字符串>是用雙引號(hào)括起的一個(gè)字符串常量,里面有要求函數(shù)原樣輸出的字符,以及規(guī)定數(shù)據(jù)輸出時(shí)采用的格式<輸出變量列表>列出了需要輸出的變量名(或表達(dá)式),變量(或表達(dá)式)的值要按照格式要求進(jìn)行輸出例如printf("c=%d+%d=%d\n",a,b,a+b)格式輸入輸出函數(shù)printf()函數(shù)中最常用格式符x=212;sum=0.628;c=‘w’;格式符說明應(yīng)用示例含義d十進(jìn)制int型printf(“x=%d\n”,x);x=212f十進(jìn)制double型printf(“sum=%f\n”,sum);sum=0.628000c單個(gè)字符printf(“Itis%c\n”,c);ItisWs字符串printf(“**%s**\n”,“Beijing”);**Beijing**u無符號(hào)十進(jìn)制數(shù)printf(“addr=%u\n”,&x);addr=65498o八進(jìn)制整數(shù)printf(“Oct=%o\n”,y);Oct=324x十六進(jìn)制整數(shù)printf(“Hex=%x\n”,z);Hex=D4格式輸入輸出函數(shù)在printf()格式符前,還可加附加格式符,以得到更多的格式輸出信息格式符說明應(yīng)用示例含義m規(guī)定輸出域?qū)抪rintf(“x=%3d\n”,x);x=212.n規(guī)定小數(shù)位數(shù)printf(“sum=%5.2f\n”,sum);sum=44.86-輸出數(shù)據(jù)左對(duì)齊printf(“%-3d\n”,a);數(shù)據(jù)左對(duì)齊格式輸入輸出函數(shù)例2.13:printf()函數(shù)中最常用格式符#include<stdio.h>voidmain(){unsignedinta=65535;shortintb=-2;printf(”a=%d,%o,%x,%u\n”,a,a,a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工地施工安全培訓(xùn)責(zé)任免除協(xié)議
- 2025年度城市綠化景觀土地使用權(quán)轉(zhuǎn)讓與維護(hù)合同
- 2025年度大學(xué)實(shí)習(xí)生實(shí)習(xí)期間權(quán)益保護(hù)與職業(yè)規(guī)劃合同
- 2025年度婚嫁婚前財(cái)產(chǎn)繼承與分配協(xié)議
- 健身房裝修合同標(biāo)準(zhǔn)
- 2025年度礦山地質(zhì)災(zāi)害防治投資合作協(xié)議
- 2025年度宅基地使用權(quán)轉(zhuǎn)讓與農(nóng)村旅游基礎(chǔ)設(shè)施建設(shè)合同
- 2025年度山林林業(yè)生態(tài)補(bǔ)償租賃合同
- 2025年度家具加工廠轉(zhuǎn)讓協(xié)議
- 2025年湖北生態(tài)工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案1套
- 2025年官方領(lǐng)養(yǎng)兒童策劃協(xié)議書
- 2025年人教版新教材英語(yǔ)小學(xué)三年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- GB/T 45083-2024再生資源分揀中心建設(shè)和管理規(guī)范
- 北京理工大學(xué)出版社二年級(jí)下冊(cè)《勞動(dòng)》教案
- 中國(guó)食物成分表2018年(標(biāo)準(zhǔn)版)第6版
- 菜肴成本核算(課堂PPT)
- 光纖通信原理課件 精品課課件 講義(全套)
- 甲醛安全周知卡
- 三菱變頻器e700使用手冊(cè)基礎(chǔ)篇
- 第二課堂美術(shù)教案
- 化工投料試車方案(一)
評(píng)論
0/150
提交評(píng)論