




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一講C語(yǔ)言概述為什么要學(xué)習(xí)程序設(shè)計(jì)?世界潮流;畢業(yè)需要;工作籌碼;...掌握一種編程語(yǔ)言;掌握基本的編程技巧;具備自學(xué)能力...能有什么收獲?
上課認(rèn)真聽(tīng)講;
多揣摩例題,多思考;
注重上機(jī)實(shí)踐(4次,4h/次)怎樣才能學(xué)好程序設(shè)計(jì)?簡(jiǎn)潔緊湊、靈活方便運(yùn)算符豐富數(shù)據(jù)結(jié)構(gòu)豐富C是結(jié)構(gòu)式語(yǔ)言C語(yǔ)法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大C語(yǔ)言允許直接訪問(wèn)物理地址,可以直接對(duì)硬件進(jìn)行操作C語(yǔ)言程序生成代碼質(zhì)量高,程序執(zhí)行效率高C語(yǔ)言適用范圍大,可移植性好具有預(yù)處理功能具有遞歸功能為什么學(xué)習(xí)C語(yǔ)言?一個(gè)簡(jiǎn)單的C語(yǔ)言程序編輯程序代碼的錄入,生成源程序*.c編譯語(yǔ)法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj鏈接與其它目標(biāo)程序或庫(kù)鏈接裝配,生成可執(zhí)行程序*.exe運(yùn)行開始編輯編譯有錯(cuò)?鏈接執(zhí)行結(jié)果正確?結(jié)束源程序file.c目標(biāo)程序file.obj庫(kù)函數(shù)和其它目標(biāo)程序可執(zhí)行程序file.exe不正確正確有無(wú)
調(diào)試C程序的流程
編寫C程序的步驟
編制C語(yǔ)言程序的基本步驟資料推薦電子資料:百度(百度知道,百度貼吧)精品課程網(wǎng)站(哈工大)相關(guān)論壇(魚C)、相關(guān)視頻(郝斌)紙質(zhì)資料:課上一分鐘,課下幾天功!考核方式平時(shí)成績(jī):30%作業(yè)上機(jī)實(shí)驗(yàn)卷面成績(jī):70%8第二講
數(shù)據(jù)類型位(bit):代表一個(gè)0或者1的二進(jìn)制單位字節(jié)(Byte):數(shù)據(jù)存儲(chǔ)的單位。一個(gè)字節(jié)由8個(gè)二進(jìn)制位組成。1Byte=8bit1、“位”與“字節(jié)”2、ASCII代碼ASCII代碼(AmericanStandardCodeforInformationInterchange,美國(guó)信息交換標(biāo)準(zhǔn)代碼)規(guī)定了英文字母、數(shù)字、標(biāo)點(diǎn)、字符轉(zhuǎn)換成計(jì)算機(jī)能識(shí)別的二進(jìn)制數(shù)的標(biāo)準(zhǔn)
‘0’=48;‘A’=65;‘a(chǎn)’=971、兩個(gè)基本概念2、標(biāo)識(shí)符、常量和變量——標(biāo)識(shí)符標(biāo)識(shí)符:對(duì)變量、符號(hào)常量、函數(shù)、數(shù)組等命名的有效字符序列合法標(biāo)識(shí)符的設(shè)定原則:1、標(biāo)識(shí)符只能由字母、數(shù)字和下劃線3種字符組成;2、標(biāo)識(shí)符的第1個(gè)字符必須是字母或者下劃線;3、編譯系統(tǒng)將大寫字母和小寫字母認(rèn)定為不同的字符;4、C語(yǔ)言中的關(guān)鍵字(見(jiàn)附錄C)不能用作標(biāo)識(shí)符。Averageaverageadd1year_student&student$averagestudent&1year_&1year-2month2monthMonth#2Aver_123Student_*1year__2month2、標(biāo)識(shí)符、常量和變量——常量(1)(1)整型常量
例:1234,0,-1234(2)實(shí)型常量i)十進(jìn)制小數(shù)形式例:123.456,0.123,-1.23,0.0,1.0ii)以10為底的指數(shù)形式,1.23e2;1.23E-2E或者e之前必須有數(shù)字,且E或者e之后必須為整數(shù)1e-2E-21.23e-1.21.23e-11234E123常量:在程序運(yùn)行過(guò)程中,其值不能被改變的量2、標(biāo)識(shí)符、常量和變量——常量(2)(3)字符常量特征:用單撇號(hào)括起一個(gè)字符,如‘A’,’b’,’3’,’*’,’#’,’@’(4)字符串常量特征:用雙撇號(hào)括起若干個(gè)字符,如”ABC”,”!A*&%^”,”cvb”‘ABC’“A”2、標(biāo)識(shí)符、常量和變量——常量(3)(5)符號(hào)常量用標(biāo)識(shí)符來(lái)代表常量#define符號(hào)常量常量
#defineNUM20#definePI3.1415926
#include<stdio.h>#definePRICE30voidmain(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}
運(yùn)行結(jié)果:total=300
#開頭的語(yǔ)句行尾不能有分號(hào)
define前面一定要有#
符號(hào)常量名最好使用大寫符號(hào)常量名最好有意義
轉(zhuǎn)義字符形式:\字符2、標(biāo)識(shí)符、常量和變量——常量(4)轉(zhuǎn)義字符名稱字符形式ASCII值空字符(Null)\00響鈴(Bell)\a7退格(BackSpasc)\b8水平制表(HorizontalTab)\t9換行(NewLine)\n10換頁(yè)(FormFeed)\f12回車(CarriageReturn)\r13雙引號(hào)(doublequote)\〞34單引號(hào)(singlequote)\′39問(wèn)號(hào)(questionmark)\?63反斜杠(backslash)\\921~3八進(jìn)制所代表的字符\ddd與數(shù)值常量區(qū)別1~2十六進(jìn)制所代表的字符\xdd
注意:①字符型數(shù)據(jù)在內(nèi)存中以ASCII碼存儲(chǔ)②‘\0’表示ASCII碼為0的字符,‘0’是ASCII碼為48的數(shù)字字符③回車符‘\r’與換行符‘\n’的區(qū)別16換行回車1.3.3基本類型
響鈴橫向跳一制表符字符‘A’的八進(jìn)制ASCII碼字符’B”的十六進(jìn)制ASCII碼2、標(biāo)識(shí)符、常量和變量——變量變量:在程序運(yùn)行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時(shí)指定該變量的名字和類型變量名和變量值是兩個(gè)不同的概念變量名實(shí)際上是以一個(gè)名字代表的一個(gè)存儲(chǔ)地址從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)3、不同數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式
類型是對(duì)數(shù)據(jù)的抽象;
類型相同的數(shù)據(jù)有相同的表示形式、存儲(chǔ)格式以及相關(guān)的操作;
程序中使用的所有數(shù)據(jù)都必定屬于某一種數(shù)據(jù)類型.
什么是數(shù)據(jù)類型?數(shù)據(jù)類型決定:1.數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2.數(shù)據(jù)取值范圍3.其上可進(jìn)行的操作C數(shù)據(jù)類型基本類型空類型(void)枚舉類型(enum)整型類型短整型(shortint)基本整型(int)本章所介紹的數(shù)據(jù)類型C語(yǔ)言的數(shù)據(jù)類型長(zhǎng)整型(longint)雙長(zhǎng)整型(longlongint)字符型(char)布爾型(bool)浮點(diǎn)類型單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)復(fù)數(shù)浮點(diǎn)型(plex,plex)派生類型數(shù)組類型([])指針類型(*)結(jié)構(gòu)體類型(struct)共用體類型(union)函數(shù)類型C數(shù)據(jù)類型基本類型空類型(void)枚舉類型(enum)整型類型短整型(shortint)基本整型(int)C語(yǔ)言的數(shù)據(jù)類型長(zhǎng)整型(longint)雙長(zhǎng)整型(longlongint)字符型(char)布爾型(bool)浮點(diǎn)類型單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)復(fù)數(shù)浮點(diǎn)型(plex,plex)派生類型數(shù)組類型([])指針類型(*)結(jié)構(gòu)體類型(struct)共用體類型(union)函數(shù)類型3、不同數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式——整型類型對(duì)于含符號(hào)的整型數(shù)(即有正負(fù)之分的整數(shù)),在存放該整數(shù)的數(shù)據(jù)單元中:1、最左面的一位用來(lái)表示符號(hào),該位為‘0’時(shí),表示數(shù)值為正,該位為‘1’時(shí),表示數(shù)值為負(fù);2、存儲(chǔ)單元中按照整數(shù)的補(bǔ)碼形式存儲(chǔ)數(shù)據(jù)。正數(shù)的補(bǔ)碼:該數(shù)值的二進(jìn)制形式負(fù)數(shù)的補(bǔ)碼:1、先將該數(shù)的絕對(duì)值轉(zhuǎn)換成二進(jìn)制形式;2、對(duì)該二進(jìn)制數(shù)按位取反,即‘0’變成‘1’,‘1’變成‘0’;3、取反結(jié)果+1即得到該負(fù)數(shù)的補(bǔ)碼。如何獲得整數(shù)的補(bǔ)碼?例,TurboC系統(tǒng)中,內(nèi)存為基本整型(int)數(shù)分配了兩個(gè)字節(jié)的存儲(chǔ)空間,14和-14在其中的存儲(chǔ)形式。00000000000011101111111111110001000000000000111014在內(nèi)存中的存儲(chǔ)形式14的原碼1111111111110010反碼-14的補(bǔ)碼整型數(shù)據(jù)的分類共八種基本整型短整型長(zhǎng)整型*雙長(zhǎng)整型無(wú)符號(hào)基本整型無(wú)符號(hào)短整型無(wú)符號(hào)長(zhǎng)整型*無(wú)符號(hào)雙長(zhǎng)整型intshortlonglonglong
unsignedintunsignedshortunsignedlongunsignedlonglong對(duì)于同一類整型數(shù)據(jù),不同的編譯系統(tǒng)分配的存儲(chǔ)空間可能不同。例:整型數(shù)據(jù)在VC++6.0中的存儲(chǔ)空間和值的范圍
類型類型說(shuō)明符長(zhǎng)度數(shù)的范圍基本型[signed]int4字節(jié)
-231~231-1
短整型short[int]
2字節(jié)
-215~215-1
長(zhǎng)整型long4字節(jié)-231~231-1
雙長(zhǎng)型longlong8字節(jié)-263~263-1
無(wú)符號(hào)整型unsigned4字節(jié)0~232-1
無(wú)符號(hào)短整型unsignedshort2字節(jié)0~216-1
無(wú)符號(hào)長(zhǎng)整型unsignedlong4字節(jié)0~(232-1)無(wú)符號(hào)雙長(zhǎng)型unsignedlonglong8字節(jié)
0~(264-1)整型變量的定義:
C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強(qiáng)制類型定義”。(先定義,后使用)定義整型變量a,b定義無(wú)符號(hào)短整型變量c,d定義長(zhǎng)整型變量e,finta,bunsignedshortc,dlonge,f說(shuō)明:不同種類的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算例:整型變量的定義與使用
C數(shù)據(jù)類型基本類型空類型(void)枚舉類型(enum)整型類型短整型(shortint)基本整型(int)C語(yǔ)言的數(shù)據(jù)類型長(zhǎng)整型(longint)雙長(zhǎng)整型(longlongint)字符型(char)布爾型(bool)浮點(diǎn)類型單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)復(fù)數(shù)浮點(diǎn)型(plex,plex)派生類型數(shù)組類型([])指針類型(*)結(jié)構(gòu)體類型(struct)共用體類型(union)函數(shù)類型字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、”a”3、不同數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式——字符類型字符變量字符型變量用來(lái)存放字符常量,注意只能放一個(gè)字符。字符變量的定義形式如下:charc1,c2;在函數(shù)中可以用下面語(yǔ)句對(duì)c1,c2賦值:
c1=‘a(chǎn)’;c2=‘b’
;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。
將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法c1=’a’;c2=‘b’;charc1,c2;ASCⅡ表00110000010000010110000100010000字符’1’和整數(shù)1是不同的概念:字符’1’只是代表一個(gè)形狀為’1’的符號(hào),在需要時(shí)按原樣輸出,在內(nèi)存中以ASCII碼形式存儲(chǔ),占1個(gè)字節(jié)整數(shù)1是以整數(shù)存儲(chǔ)方式(二進(jìn)制補(bǔ)碼方式)存儲(chǔ)的,占2個(gè)或4個(gè)字節(jié)001100010000000000000001例1.定義字符變量。#include<stdio.h>voidmain(){charc1;c1=‘A’;printf("%c\n",c1);}注意:字符數(shù)據(jù)的存儲(chǔ)形式與短整數(shù)的存儲(chǔ)形式相同,只是只占用一個(gè)字節(jié)。
字符數(shù)據(jù)是以ASCII碼存儲(chǔ)的,字符A的ASCII碼為65,在內(nèi)存中表示為:010000010100000100000000短整數(shù)65在內(nèi)存中表示為:例2.將整型數(shù)賦給字符變量。#include<stdio.h>voidmain(){char
c1,c2;c1=‘A’;
c2=65;
printf(“%c%c\n",c1,c2);
}由于字符在內(nèi)存中的形式與整型數(shù)據(jù)相同,所以,可以直接將整型值賦給字符變量。輸出:AAc1和c2兩變量在內(nèi)存中的表示均是相同的0100000101000001c1c2例3.將字符賦給整型變量。#include<stdio.h>voidmain(){
shortinti,j;i=‘A’;
j=‘B’;
printf(“%d%d\n”,i,j)
;
printf(“%c%c\n”,i,j);
}進(jìn)一步,也可以直接用字符給整型變量賦值。結(jié)果輸出:
6566AB例:大小寫字母的轉(zhuǎn)換
允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。
C數(shù)據(jù)類型基本類型空類型(void)枚舉類型(enum)整型類型短整型(shortint)基本整型(int)C語(yǔ)言的數(shù)據(jù)類型長(zhǎng)整型(longint)雙長(zhǎng)整型(longlongint)字符型(char)布爾型(bool)浮點(diǎn)類型單精度浮點(diǎn)型(float)雙精度浮點(diǎn)型(double)復(fù)數(shù)浮點(diǎn)型(plex,plex)派生類型數(shù)組類型([])指針類型(*)結(jié)構(gòu)體類型(struct)共用體類型(union)函數(shù)類型3、不同數(shù)據(jù)類型在計(jì)算機(jī)內(nèi)的存儲(chǔ)形式——浮點(diǎn)類型兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e
實(shí)型常量即采用浮點(diǎn)類型存儲(chǔ)浮點(diǎn)數(shù)123.456可以有多種表達(dá)形式,例如123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e5規(guī)范化的指數(shù)形式:
在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)前的數(shù)字為0、小數(shù)點(diǎn)后第一位數(shù)字不為零.123.456的規(guī)范化指數(shù)形式為0.123456e3浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式
一般在內(nèi)存中占4個(gè)字節(jié)(32位);
浮點(diǎn)型數(shù)據(jù)是按照指數(shù)形式存儲(chǔ)的,系統(tǒng)把一個(gè)浮點(diǎn)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放;
數(shù)據(jù)采用規(guī)范化的指數(shù)形式。類型字節(jié)數(shù)的范圍有效數(shù)字float4
10-37~10386~7位double型8
10-307~1030815~16位longdouble8/1210-4931~10493218~19位浮點(diǎn)型變量的分類浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(longdouble)三類形式。正確結(jié)果:a+b=123456789020.000000運(yùn)行結(jié)果:
a+b=123456790528.000000例:浮點(diǎn)型數(shù)據(jù)的舍入誤差
#include<stdio.h>intmain(){floata,b;a=12345.6789e7;b=a+20;printf("a+b=%f\n",b);
return0;}說(shuō)明:一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字;避免將大數(shù)和小數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)doublea,b;常量類型的確定字符常量:
—雙撇號(hào)括起來(lái)的一個(gè)字符或轉(zhuǎn)義字符
—1個(gè)字節(jié)整型常量:
—不帶小數(shù)點(diǎn)的數(shù)值
—系統(tǒng)根據(jù)數(shù)值的大小確定int型還是long型等
—2或4個(gè)字節(jié)浮點(diǎn)型常量:
—以小數(shù)形式或指數(shù)形式出現(xiàn)的實(shí)數(shù)C編譯系統(tǒng)把浮點(diǎn)型常量都按雙精度處理分配8個(gè)字節(jié)例:判斷下列常量所占的字節(jié)數(shù)‘A’\x3012345671.01
11482第三講
運(yùn)算符及表達(dá)式運(yùn)算符表達(dá)式a+b/2.0-c代表對(duì)數(shù)據(jù)的加工處理方法,用于執(zhí)行對(duì)目標(biāo)數(shù)據(jù)(操作數(shù))的運(yùn)算變量用來(lái)存放數(shù)據(jù);運(yùn)算符用來(lái)處理數(shù)據(jù)用運(yùn)算符將操作數(shù)據(jù)對(duì)象(操作數(shù),包括變量和常量)連接起來(lái)的,符合C語(yǔ)法規(guī)則的式子
運(yùn)算符的分類:
單目運(yùn)算符:只帶一個(gè)操作數(shù)的運(yùn)算符。如:++、--運(yùn)算符。雙目運(yùn)算符:帶兩個(gè)操作數(shù)的運(yùn)算符。如:+、-運(yùn)算符。三目運(yùn)算符:帶三個(gè)操作數(shù)的運(yùn)算符。如?:運(yùn)算符。
學(xué)習(xí)運(yùn)算符時(shí)應(yīng)注意:
運(yùn)算符的功能:該運(yùn)算符主要用于做什么運(yùn)算。與運(yùn)算量關(guān)系:要求運(yùn)算量的個(gè)數(shù)及運(yùn)算量的類型。運(yùn)算符的優(yōu)先級(jí):表達(dá)式中包含多個(gè)不同運(yùn)算符時(shí)運(yùn)算符運(yùn)算的先后次序。運(yùn)算符的結(jié)合性:同級(jí)別運(yùn)算符的運(yùn)算順序(指左結(jié)合性還是右結(jié)合性)。運(yùn)算結(jié)果的類型:表達(dá)式運(yùn)算后最終所得到的值的類型。C運(yùn)算符算術(shù)運(yùn)算符:(+-*/%++--)關(guān)系運(yùn)算符:(<<===>>=!=)邏輯運(yùn)算符:((!&&||)位運(yùn)算符:(<<>>~|^&)賦值運(yùn)算符:(=)條件運(yùn)算符:(?:)逗號(hào)運(yùn)算符:(,)指針運(yùn)算符:(*&)求字節(jié)數(shù):(sizeof)強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:(.->)下標(biāo)運(yùn)算符:([])其它:(()-)1.賦值運(yùn)算符、賦值表達(dá)式
賦值運(yùn)算符(“=”,雙目運(yùn)算符)
一般形式:變量=常量或變量或表達(dá)式
功能:將右邊常量或變量或表達(dá)式的值賦給左邊變量
例如:
intx,y,z;x=20;y=x;z=x+y;賦值表達(dá)式
定義:
由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符(后面即將介紹),將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的表達(dá)式,稱為賦值表達(dá)式。
一般格式:變量(復(fù)合)賦值運(yùn)算符表達(dá)式
賦值表達(dá)式的值:被賦值變量的值。例如:“a=5”這個(gè)賦值表達(dá)式,變量a的值“5”就是它的值。
賦值語(yǔ)句
例如:
x=8;a=b=c=5;
定義:賦值表達(dá)式在其后面加分號(hào)就構(gòu)成了賦值語(yǔ)句。賦值運(yùn)算符及賦值表達(dá)式的使用
多個(gè)變量連續(xù)賦值例如:
a=b=c=10;
a=(b=(c=10));
結(jié)果:a、b、c的值都為10
賦值表達(dá)式的嵌套例如:
a=(b=2)+(c=3)
(a=(b=2)+(c=3))
結(jié)果:b為2,c為3,a為b+c即5注意:
“=”左邊必須是變量名或?qū)?yīng)某特定內(nèi)存單元的表達(dá)式,不能是常量或其它表達(dá)式。例如:30=a;b+2=5;都是錯(cuò)誤的。
“=”不是代數(shù)中相等的意思。相等的判斷由關(guān)系運(yùn)算符“==”
實(shí)現(xiàn)。2.賦值過(guò)程中的數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型是可以相互轉(zhuǎn)換的。轉(zhuǎn)換的方法有兩種:一種是自動(dòng)轉(zhuǎn)換,一種是強(qiáng)制轉(zhuǎn)換。自動(dòng)轉(zhuǎn)換
例如:inta=2.5;則a的值將是2,而不是2.5。這種自動(dòng)改變等號(hào)右邊表達(dá)式值的數(shù)據(jù)類型的操作稱為數(shù)據(jù)類型的自動(dòng)轉(zhuǎn)換。
首先將等號(hào)右邊的表達(dá)式的值轉(zhuǎn)換成“=”左邊的數(shù)據(jù)類型。然后再賦值給等號(hào)左邊的變量。
(1)短長(zhǎng)度的數(shù)據(jù)類型→長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型
方法:直接將無(wú)符號(hào)短長(zhǎng)度的數(shù)據(jù)類型的數(shù)據(jù)作為長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分,長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的高位部分補(bǔ)零。
無(wú)符號(hào)短長(zhǎng)度的數(shù)據(jù)類型→無(wú)符號(hào)或有符號(hào)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型xx………x無(wú)符號(hào)短長(zhǎng)度的數(shù)據(jù)類型長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型xx………x00.....0.....高位部分補(bǔ)0例如:
unsignedcharch=0xfc;unsignedinta=0xff00;//假設(shè)int數(shù)據(jù)為16位
intb;unsignedlongu;
b=ch;
u=a;
如果將ch的值賦給-4,問(wèn)b的值又是多少呢?
0x00fcb的值為0x00fcU的值為0x0000ff002.賦值過(guò)程中的數(shù)據(jù)類型轉(zhuǎn)換自動(dòng)轉(zhuǎn)換
(1)短長(zhǎng)度的數(shù)據(jù)類型→長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型
方法:直接將有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型的數(shù)據(jù)作為長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分,然后將低位部分的最高位(即有符號(hào)短長(zhǎng)度數(shù)據(jù)的符號(hào)位)向長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的高位部分?jǐn)U展。
有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型→無(wú)符號(hào)或有符號(hào)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型zx………x有符號(hào)短長(zhǎng)度的數(shù)據(jù)類型長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型zx………xz符號(hào)位向高位部分?jǐn)U展………zz符號(hào)位例如:
charch=2;shortinta=-2;intb;unsignedintu;//假設(shè)int數(shù)據(jù)為32位
b=ch;
u=a;
b的值為0x0002U的值為0xffffffe2.賦值過(guò)程中數(shù)據(jù)類型轉(zhuǎn)換自動(dòng)轉(zhuǎn)換
(2)長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型→短長(zhǎng)度的數(shù)據(jù)類型
方法:直接截取長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型數(shù)據(jù)的低位部分(長(zhǎng)度為短長(zhǎng)度的數(shù)據(jù)類型的長(zhǎng)度)作為短長(zhǎng)度數(shù)據(jù)類型的數(shù)據(jù)。
xx………x短長(zhǎng)度的數(shù)據(jù)類型長(zhǎng)長(zhǎng)度的數(shù)據(jù)類型yy………yxx………x例如:
inta=-32768;//假設(shè)int數(shù)據(jù)為16位
unsignedlongb=0xffffaa00;charch;intc;ch=a;
c=b;
(3)長(zhǎng)度相同的數(shù)據(jù)類型轉(zhuǎn)換
方法:數(shù)據(jù)按照原樣復(fù)制即可。
例如:
inta=0xff00;
unsignedintb=a;
b的值為0xff00ch的值為0x00c的值為0xaa002.賦值過(guò)程中的數(shù)據(jù)類型轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)換是通過(guò)類型轉(zhuǎn)換運(yùn)算符來(lái)實(shí)現(xiàn)的。其一般形式為:
(類型說(shuō)明符)(表達(dá)式)
功能:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說(shuō)明符所表示的類型。其中,(類型說(shuō)明符)是強(qiáng)制類型轉(zhuǎn)換符,它的優(yōu)先級(jí)比較高。例:
floatx=3.5,y=2.1,z;inta;a=(int)(x+y);z=(int)x+y;z=(double)(3/2);a=(int)3.6;
//結(jié)果為5
//結(jié)果為5.100000
//結(jié)果為1.000000//結(jié)果為3注意精度損失問(wèn)題!注意:類型說(shuō)明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào))。無(wú)論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長(zhǎng)度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說(shuō)明時(shí)對(duì)該變量定義的類型。
基本算術(shù)運(yùn)算符:
+-*/%
結(jié)合性:左結(jié)合性優(yōu)先級(jí):先*/%后
+-
“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)
%要求兩側(cè)均為整型數(shù)據(jù)例:5/2結(jié)果
-5/2.0結(jié)果例:
5%2結(jié)果
-5%2結(jié)果
1%10結(jié)果
5%1結(jié)果
5.5%23.算術(shù)運(yùn)算符、算術(shù)表達(dá)式
2-2.51-110()余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同,其值的絕對(duì)值等于兩數(shù)絕對(duì)值相除所得的余數(shù)。5%-2結(jié)果-5%-2結(jié)果
1-1
表達(dá)式和算術(shù)表達(dá)式3.算術(shù)運(yùn)算符、算術(shù)表達(dá)式
表達(dá)式:用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(常量、變量和函數(shù)等)連接起來(lái)的、符合C語(yǔ)言語(yǔ)法規(guī)則的式子。算術(shù)表達(dá)式:表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符的表達(dá)式。
運(yùn)算符優(yōu)先級(jí)(到目前為止)例:
3+5*8、(x+y)/2-1等類型強(qiáng)制轉(zhuǎn)換運(yùn)算符的優(yōu)先級(jí)
算術(shù)運(yùn)算符的優(yōu)先級(jí)賦值運(yùn)算符的優(yōu)先級(jí)高低
自增、自減運(yùn)算符++--
作用:使變量值加1或減1
種類:
前置
++i,--i(先執(zhí)行i=i+1或i=i-1,再使用i值)
后置
i++,i--(先使用i值,再執(zhí)行i=i+1或i=i-1)例:
j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;
//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=44.自增自減運(yùn)算符、負(fù)號(hào)運(yùn)算符
負(fù)號(hào)運(yùn)算符(“-”)
(-):一個(gè)算術(shù)運(yùn)算符(雙目)+一個(gè)負(fù)號(hào)運(yùn)算符(單目)
例如:a=2,那么-a的值就是-2。負(fù)號(hào)運(yùn)算符的優(yōu)先級(jí)比較高,與強(qiáng)制類型轉(zhuǎn)換符()是同一個(gè)級(jí)別。
自增、自減運(yùn)算符注意事項(xiàng)++和--運(yùn)算符只能用于變量,不能用于常量和表達(dá)式。因?yàn)?+和--蘊(yùn)含著賦值操作。
例如:5++、--(a+b)都是非法的表達(dá)式。負(fù)號(hào)運(yùn)算符、++、--和強(qiáng)制類型轉(zhuǎn)換運(yùn)算符的優(yōu)先級(jí)相同,當(dāng)這些運(yùn)算符連用時(shí),按照從右向左的順序計(jì)算,即具有右結(jié)合性。兩個(gè)+和-之間不能有空格。在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。
例如:++i++是非法的。自增、自減運(yùn)算,常用于循環(huán)語(yǔ)句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個(gè)地址。4.自增自減運(yùn)算符、負(fù)號(hào)運(yùn)算符5.算術(shù)運(yùn)算符中數(shù)據(jù)類型轉(zhuǎn)換規(guī)則
低高doublefloatlongunsignedintchar,shortlongdouble說(shuō)明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換例:
charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例:
inti;floatf;doubled;longl;intintdoubledoubledoubledoubledoubledouble#include<stdio.h>voidmain(){floata,b,c;a=7/2;b=7/2*1.0;c=1.0*7/2;printf("a=%f,b=%f,c=%f",a,b,c);}a=3.000000,b=3.000000,c=3.500000計(jì)算7/2得int型值3,因此a的值為3.0計(jì)算7/2得int型值3,再與1.0相乘,因此b的值為3.0先計(jì)算1.0*7得double型的結(jié)果7.0,然后再計(jì)算
7.0/2,因此c的值是3.56.關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符1.關(guān)系運(yùn)算符和關(guān)系表達(dá)式
關(guān)系運(yùn)算符含義優(yōu)先級(jí)結(jié)合性>大于這些關(guān)系運(yùn)算符等優(yōu)先級(jí),但比下面的優(yōu)先級(jí)高左結(jié)合性>=(>和=之間沒(méi)有空格)大于或等于<小于<=(<和=之間沒(méi)有空格)小于或等于==(兩個(gè)=之間沒(méi)有空格)等于這些關(guān)系運(yùn)算符等優(yōu)先級(jí),但比上面的優(yōu)先級(jí)低!=(!和=之間沒(méi)有空格)不等于
關(guān)系運(yùn)算符
關(guān)系表達(dá)式
用關(guān)系運(yùn)算符連接起來(lái)的式子稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的一般形式為:表達(dá)式關(guān)系運(yùn)算符表達(dá)式例:a+b>c–dx>3/2'a'+1<c–
i–5*j==k+1
注意:
C語(yǔ)言用0表示假,非0表示真。一個(gè)關(guān)系表達(dá)式的值不是0就是1,0表示假,1表示真。
關(guān)系運(yùn)算符的優(yōu)先級(jí)
算術(shù)運(yùn)算符高移位運(yùn)算符關(guān)系運(yùn)算符&、|、^賦值運(yùn)算符低例如:
c>a+b等價(jià)于:
a>b!=c等價(jià)于:
a==b<c等價(jià)于:
a=b>c等價(jià)于:
a>>2<c+d等價(jià)于:
a&4>b|c等價(jià)于:
c>(a+b)(a>b)!=ca==(b<c)a=(b>c)(a>>2)<(c+d)(a&(4>b))|c已知:a=1;b=2;c=3;
問(wèn):d=a!=c==a<b<c;的值?
答:d的值為1。等價(jià)于:d=((a!=c)==((a<b)<c));例:inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表達(dá)式值1//表達(dá)式值1//表達(dá)式值0//d=1//f=0關(guān)系運(yùn)算注意:例若a=0;b=0.5;x=0.3;
則a<=x<=b的值為
0例
5>2>7>8在C中是允許的,值為0例
inti=1,j=7,a;a=i+(j%4!=0);
則a=2例‘a(chǎn)’>0結(jié)果為‘A’>100結(jié)果為10例
應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-602.邏輯運(yùn)算符和邏輯表達(dá)式
邏輯運(yùn)算符
邏輯運(yùn)算符含義結(jié)合性優(yōu)先級(jí)關(guān)系!單目運(yùn)算符,邏輯非,表示相反右結(jié)合性
高低&&(兩個(gè)&之間沒(méi)有空格)雙目運(yùn)算符,邏輯與,表示并且左結(jié)合性||(兩個(gè)|之間沒(méi)有空格)雙目運(yùn)算符,邏輯或,表示或者AB!A!BA&&BA||B假假1100假真1001真假0101真真0011
邏輯運(yùn)算真值表
!、~、++、--、sizeof高算術(shù)運(yùn)算符移位運(yùn)算符關(guān)系運(yùn)算符&、|、^&&、||賦值運(yùn)算符低例如:
a<=x&&x<=b等價(jià)于:
a>b&&x>y等價(jià)于:
a==b||x==y等價(jià)于:
!a||a>b等價(jià)于:
!a>b等價(jià)于:
c=a||b等價(jià)于:
a|7&&b&8等價(jià)于:
a>>2&&b<<1等價(jià)于:2.邏輯運(yùn)算符和邏輯表達(dá)式
邏輯表達(dá)式
用邏輯運(yùn)算符連接起來(lái)的式子稱為邏輯表達(dá)式。邏輯表達(dá)式的一般形式為:表達(dá)式邏輯運(yùn)算符表達(dá)式例:a<b&&b<c、x>10||x<-10、!x&&!y
邏輯運(yùn)算符的優(yōu)先級(jí)
(a<=x)&&(x<=b)(a>b)&&(x>y)(a==b)||(x==y)(!a)||(a>b)(!a)>bc=(a||b)(a|7)&&(b&8)(a>>2)&&(b<<1)已知:a=4;b=5;
問(wèn):c=b>3&&2||8<b-!a;的值?
答:c的值為1。等價(jià)于:c=(((b>3)&&2)||(8<(b–(!a))));
例:
a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’//值為0//值為1//值為1//值為1//值為1//值為1//值為1邏輯運(yùn)算注意:
邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。例
a&&b&&c//只在a為真時(shí),才判別b的值;
只在a、b都為真時(shí),才判別c的值例
a||b||c//只在a為假時(shí),才判別b的值;
只在a、b都為假時(shí),才判別c的值例
a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//結(jié)果:m=0,n=1expr1取expr2值取expr3值非0=0條件運(yùn)算符可嵌套
如x>0?1:(x<0?-1:0)優(yōu)先級(jí):僅高于賦值運(yùn)算符和逗號(hào)運(yùn)算符3.條件運(yùn)算符與表達(dá)式一般形式:expr1?expr2:expr3執(zhí)行過(guò)程功能:相當(dāng)于條件語(yǔ)句例
求a+|b|printf(“a+|b|=%d\n”,b>0?a+b:a-b);例
(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a(chǎn)’&&c<=‘z’)?c-’a’+’A’:c結(jié)合方向:右結(jié)合性
如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3類型可不同,表達(dá)式值取較高的類型例
x?‘a(chǎn)’:‘b’//x=0,表達(dá)式值為‘b’;x≠0,表達(dá)式值為‘a(chǎn)’x>y?1:1.5//x>y,值為1.0;x<y,值為1.5例
if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);例:小寫字母轉(zhuǎn)盤。#include<stdio.h>#include<conio.h>voidmain(){charch,ch1,ch2;ch=getchar();//讀取一字符
putchar('\n');//換行
ch1=ch=='a'?'z':ch-1;
ch2=ch=='z'?'a':ch+1;
printf("ch1=%c,ch2=%c\n",ch1,ch2);//顯示結(jié)果}輸出結(jié)果(假設(shè)輸入為w)
:ch1=v,ch2=x7.位運(yùn)算符、位運(yùn)算表達(dá)式
位運(yùn)算符:按位與(&)、按位或(|)、按位取反(~)、按位異或(^)、左移(<<)、右移(>>)六種。
左移(<<)
實(shí)現(xiàn)將某變量所對(duì)應(yīng)的二進(jìn)制數(shù)往左移位,溢出的最高位被丟掉,空出的低位用零填補(bǔ)。其一般格式為:
返回整型值的表達(dá)式<<返回整型值的表達(dá)式例:
inta=3;
a<<2:將a所對(duì)應(yīng)的二進(jìn)制數(shù)左移兩位,該表達(dá)式的值為12。
2<<a:將2所對(duì)應(yīng)的二進(jìn)制數(shù)左移三位(a的值),該表達(dá)式的值為16。
右移(>>)右移運(yùn)算實(shí)現(xiàn)將某變量所對(duì)應(yīng)的二進(jìn)制數(shù)往右移位,溢出的最低位被丟掉,如果變量是無(wú)符號(hào)數(shù),空出的高位用零填補(bǔ),如果變量是有符號(hào)數(shù),空出的高位用原來(lái)的符號(hào)位填補(bǔ)(即負(fù)數(shù)填1,正數(shù)填0)。其一般格式為:
返回整型值的表達(dá)式>>返回整型值的表達(dá)式例:inta=8;a>>2:將a所對(duì)應(yīng)的二進(jìn)制數(shù)右移兩位,該表達(dá)式的值為2。
7.位運(yùn)算符、位運(yùn)算表達(dá)式
按位或(|)(一真即真)
如果兩個(gè)數(shù)對(duì)應(yīng)的位全為0,對(duì)應(yīng)的結(jié)果位值為0,否則,對(duì)應(yīng)的結(jié)果位值為1。
按位與(&)(一假即假)如果兩個(gè)數(shù)對(duì)應(yīng)的位全為1,對(duì)應(yīng)的結(jié)果位值為1,否則,對(duì)應(yīng)的結(jié)果位值為0。按位取反(~
)是個(gè)單目運(yùn)算符。如果一個(gè)數(shù)的原來(lái)對(duì)應(yīng)的位為1,對(duì)應(yīng)的結(jié)果位值為0;如果一個(gè)數(shù)的原來(lái)對(duì)應(yīng)的位為0,對(duì)應(yīng)的結(jié)果位值為0,對(duì)應(yīng)的結(jié)果位值為1。例:inta=8,b=9,c=12,d=3;a|b的值等于。
c|d的值等于例:inta=8,b=9,c=12,d=3;a&b的值等于。
c&d的值等于例:inta=8,b=9;~a的值等于。
~d的值等于91580-9-107.位運(yùn)算符、位運(yùn)算表達(dá)式
位運(yùn)算之間的優(yōu)先級(jí)
~→<<、>>→&→^→|按位異或(^)(不同即真)如果兩個(gè)數(shù)對(duì)應(yīng)的位的值不同,對(duì)應(yīng)的結(jié)果位值為1;否則,對(duì)應(yīng)的結(jié)果位值為0。例:inta=8,b=9;a^b的值等于1高低8.逗號(hào)運(yùn)算符、逗號(hào)表達(dá)式
位運(yùn)算符:,
逗號(hào)表達(dá)式:用逗號(hào)連接起來(lái)的表達(dá)式。其一般形式為:表達(dá)式1,表達(dá)式2,……,表達(dá)式k
優(yōu)先級(jí):優(yōu)先級(jí)最低。
結(jié)合性:左結(jié)合性。即逗號(hào)表達(dá)式的求值順序是從左向右依此計(jì)算用逗號(hào)分隔的各表達(dá)式的值。逗號(hào)表達(dá)式的值:最后一個(gè)表達(dá)式的值就是整個(gè)逗號(hào)表達(dá)式的值。
用途:常用于循環(huán)for語(yǔ)句中。例如:a+3,b=4,b++
例:a=3*5,a*4a=3*5,a*4,a+5例:
x=(a=3,6*3)x=a=3,6*a例:a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);//a=15,表達(dá)式值60//a=15,表達(dá)式值20//賦值表達(dá)式,表達(dá)式值18,x=18//逗號(hào)表達(dá)式,表達(dá)式值18,x=3//1,2,3//3,2,3例:#include<stdio.h>voidmain(){intx,y=7;floatz=4;x=(y=y+6,y/z);printf("x=%d\n",x);}運(yùn)行結(jié)果:x=39.sizeof運(yùn)算符、復(fù)合運(yùn)算符
sizeof運(yùn)算符
功能:獲取變量和數(shù)據(jù)類型所占內(nèi)存大?。ㄗ止?jié)數(shù))
格式:sizeof表達(dá)式sizeof(數(shù)據(jù)類型名或表達(dá)式)例:
sizeof(int)其值為2(在TC2.0或BC3.1下)
其值為4(在VC6.0下)
sizeof(long)其值是4
sizeof10L其值也是4
unsignedlonga=2;sizeof(a)其值也是4
復(fù)合賦值運(yùn)算符
種類:+=-=*=/=%=<<=>>=&=^=|=含義:
exp1op=exp2exp1=exp1opexp2
定義:將算術(shù)運(yùn)算符、位運(yùn)算符與賦值運(yùn)算符組合在一起就構(gòu)成了復(fù)合賦值運(yùn)算符。復(fù)合賦值運(yùn)算符即包含了算術(shù)運(yùn)算或位運(yùn)算,又包含了賦值操作。(右結(jié)合性)a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3x&=y=3y=3和x&=y例:
a=4;a+=a-=a*a;//a=-24等價(jià)于a=a+(a=a-(a*a))例:
inta=2;a%=4-1;a+=a*=a-=a*=3;//a=0等價(jià)于a=a+(a=a*(a=a-(a=a*3)))運(yùn)算符的優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)運(yùn)算符需要操作數(shù)的個(gè)數(shù)結(jié)合性高低()從左向右~++---(負(fù)號(hào)運(yùn)算符)sizeof(類型)1(單目運(yùn)算符)從右向左*/%2(雙目運(yùn)算符)從左向右+-(減法)2(雙目運(yùn)算符)從左向右<<>>2(雙目運(yùn)算符)從左向右&2(雙目運(yùn)算符)從左向右^2(雙目運(yùn)算符)從左向右|2(雙目運(yùn)算符)從左向右=+=-=*=/=%=>>=<<=&=^=|=2(雙目運(yùn)算符)從右向左,從左向右運(yùn)算符總結(jié):
總體上講,單目運(yùn)算符都是同等優(yōu)先級(jí)的,具有右結(jié)合性,并且優(yōu)先級(jí)比雙目運(yùn)算符和三目運(yùn)算符都高。三目運(yùn)算符的優(yōu)先級(jí)比雙目運(yùn)算符要低,但高于賦值運(yùn)算符和逗號(hào)運(yùn)算符。逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低,其次是賦值運(yùn)算符。只有單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符具有右結(jié)合性,其它運(yùn)算符都是左結(jié)合性。雙目運(yùn)算符中,算術(shù)運(yùn)算符的優(yōu)先級(jí)最高,邏輯運(yùn)算符的優(yōu)先級(jí)最低。
單目運(yùn)算符(右)
高算術(shù)運(yùn)算符移位運(yùn)算符關(guān)系運(yùn)算符位運(yùn)算符邏輯運(yùn)算符條件運(yùn)算符(右)賦值運(yùn)算符(右)逗號(hào)運(yùn)算符低
到現(xiàn)在為止,我們已經(jīng)學(xué)習(xí)了30多個(gè)運(yùn)算符。掌握它們的優(yōu)先級(jí)關(guān)系特別重要。優(yōu)先級(jí)的記憶規(guī)則:第四講
數(shù)據(jù)輸入與輸出計(jì)算機(jī)待處理數(shù)據(jù)
輸入處理結(jié)果鍵盤顯示器輸出C語(yǔ)言本身不提供輸入輸出語(yǔ)句!格式輸入函數(shù): scanf()格式輸出函數(shù): printf()字符輸入函數(shù): getchar()字符輸出函數(shù): putchar()字符串輸入函數(shù): gets()字?jǐn)?shù)串輸出函數(shù): puts()調(diào)用C標(biāo)準(zhǔn)函數(shù)庫(kù)中的輸入輸出函數(shù)實(shí)現(xiàn)數(shù)據(jù)的輸入輸出功能#include<stdio.h>#include
“stdio.h”標(biāo)準(zhǔn)方式(從C系統(tǒng)子目錄查找)當(dāng)前目錄優(yōu)先方式一、格式化輸出——printf語(yǔ)句二、格式化輸入——scanf語(yǔ)句三、字符數(shù)據(jù)的非格式化輸入、輸出一、格式化輸出——printf語(yǔ)句二、格式化輸入——scanf語(yǔ)句三、字符數(shù)據(jù)的非格式化輸入、輸出
一般格式printf(“格式控制字符串”,輸出表列);
功能
將輸出表列(常量、變量或表達(dá)式)的值,按照格式控制字符串的要求,顯示在計(jì)算機(jī)屏幕上。
說(shuō)明
格式控制字符串用于指定輸出格式。它包含兩類字符:
常規(guī)字符:包括可顯示字符和用轉(zhuǎn)義字符表示的字符。
格式控制符:以%開頭的一個(gè)或多個(gè)字符,以說(shuō)明輸出數(shù)據(jù)的類型、形式、長(zhǎng)度、小數(shù)位數(shù)等。其格式為:%[修飾符]格式轉(zhuǎn)換字符例:
longintx=0x8AB6;printf(“TheValueofxis%ld\n”,x);常規(guī)字符常規(guī)字符(轉(zhuǎn)義符)格式控制符(修飾符)格式控制符(格式轉(zhuǎn)換符)printf使用時(shí)的注意事項(xiàng)(1)格式控制字符串可以不包含任何格式控制符。(2)當(dāng)格式控制字符串中既含有常規(guī)字符,又包含有格式控制符時(shí),則輸出表列中表達(dá)式(或變量)的個(gè)數(shù)應(yīng)與格式控制符的個(gè)數(shù)一致。此時(shí),常規(guī)字符原樣輸出,而格式控制符的位置上輸出對(duì)應(yīng)的表達(dá)式的值,其對(duì)應(yīng)的順序是:從左到右的格式控制符對(duì)應(yīng)從左到右的表達(dá)式。(3)
如果格式控制字符串中格式控制符的個(gè)數(shù)多于表達(dá)式的個(gè)數(shù),則余下的格式控制符的值將是不確定的。(4)同一表達(dá)式如果按照不同的格式轉(zhuǎn)換符來(lái)輸出,其結(jié)果可能是不一樣的。
printf(“howareyou?\n”);//只有一個(gè)字符串參數(shù),輸出為:howareyou?printf(“howoldareyou?\n”,20);//帶有兩個(gè)參數(shù),20沒(méi)有意義,輸出為:howoldareyou?已知:
inta=2;函數(shù)調(diào)用:
printf("a*a=%d,a+5=%d\n",a*a,a+5);實(shí)際輸出:
a*a=4,a+5=7printf("5+3=%d,5-3=%d,5*3=%d",5+3,5-3);
輸出結(jié)果將是:5+3=8,5–3=2,5*3=-28710輸出隨機(jī)charch='A';printf("ch=%c",ch);//輸出結(jié)果:ch=A
(以字符形式輸出)printf("ch=%d",ch);//輸出結(jié)果:ch=65
(以'A'字符的ASCII碼形式輸出)
printf函數(shù)中的格式轉(zhuǎn)換字符及其含義
格式轉(zhuǎn)換符含義對(duì)應(yīng)的表達(dá)式數(shù)據(jù)類型%d或%i以十進(jìn)制形式輸出一個(gè)有符號(hào)整型數(shù)據(jù)。例如:inta=20;printf("%d",a);//輸出20有符號(hào)整型%x,%X以十六進(jìn)制形式輸出一個(gè)無(wú)符號(hào)整型數(shù)據(jù)。例如:inta=164;printf("%x",a);//輸出a4printf("%X",a);//輸出A4無(wú)符號(hào)整型%o(字母o)以八進(jìn)制形式輸出一個(gè)無(wú)符號(hào)整型數(shù)據(jù)。例如:inta=164;printf("%o",a);//輸出244無(wú)符號(hào)整型%u以十進(jìn)制形式輸出一個(gè)無(wú)符號(hào)整型數(shù)據(jù)。例如:inta=-1;printf("%u",a);//BC下輸出65535,VC下無(wú)符號(hào)整型%c輸出一個(gè)字符型數(shù)據(jù)。例如:charch='A';printf("%c",ch);//輸出A字符型
printf函數(shù)中的格式轉(zhuǎn)換字符及其含義
格式轉(zhuǎn)換符含義對(duì)應(yīng)的表達(dá)式數(shù)據(jù)類型%s輸出一個(gè)字符串。例如:printf("mynameis%s",“BoJiao");//輸出mynameisBoJiao字符串%f以十進(jìn)制小數(shù)形式輸出一個(gè)浮點(diǎn)型數(shù)據(jù)。例如:floatf=-12.3;printf("%f",f);//輸出-12.300000浮點(diǎn)型%e,%E以指數(shù)形式輸出一個(gè)浮點(diǎn)型數(shù)據(jù)。例如:floatf=1234.8988;printf("%e",f);//輸出1.234899e+003printf("%E",f);//輸出1.234899E+003浮點(diǎn)型%g,%G按照%f或%e中輸出寬度比較短的一種格式輸出。(默認(rèn)輸出六位有效數(shù)字)浮點(diǎn)型%p以主機(jī)的格式顯示指針,即變量的地址。例如:inta=2;printf(“%p”,&a);//BC下輸出FFD8,
VC下0012FF7C指針類型1.整數(shù)的輸出
有符號(hào)整數(shù)的輸出
一般形式:
[]:表示可選項(xiàng),可缺省。
-:表示輸出的數(shù)據(jù)左對(duì)齊,缺省時(shí)是右對(duì)齊。
+:輸出正數(shù)時(shí),在數(shù)的前面加上+號(hào)。
數(shù)字0:右對(duì)齊時(shí),如果實(shí)際寬度小于width,則在左邊的空位補(bǔ)0。
width:無(wú)符號(hào)整數(shù),表示輸出整數(shù)的最小域?qū)挘凑计聊坏亩嗌俑瘢?。若?shí)際寬度超過(guò)了width,則按照實(shí)際寬度輸出。
.precision:無(wú)符號(hào)整數(shù),表示至少要輸出precision位。若整數(shù)的位數(shù)大于precision,則按照實(shí)際位數(shù)輸出,否則在左邊的空位上補(bǔ)0。
字母l:如果在d的前面有字母l(long),表示要輸出長(zhǎng)整型數(shù)據(jù)。
字母h:如果在d的前面有字母h(short),表示要輸出短整型數(shù)據(jù)。
說(shuō)明:%[-][+][0][width][.precision][l][h]d輔助格式控制字符(修飾符)
【例】有符號(hào)整數(shù)的格式化輸出
#include<stdio.h>voidmain(){inta=123;longL=65537;printf("90\n");printf("a=%d--------(a=%%d)\n",a);printf("a=%6d-----(a=%%6d)\n",a);printf("a=%+6d-----(a=%%+6d)\n",a);printf("a=%-6d-----(a=%%-6d)\n",a);printf("a=%-06d-----(a=%%-06d)\n",a);printf("a=%+06d-----(a=%%+06d)\n",a);printf("a=%+6.6d----(a=%%+6.6d)\n",a);printf("a=%6.6d-----(a=%%6.6d)\n",a);printf("a=%-6.5d-----(a=%%-6.5d)\n",a);printf("a=%6.4d-----(a=%%6.4d)\n",a);printf("L=%ld------(L=%%ld)\n",L);printf("L=%hd----------(L=%%hd)\n",L);}90a=123--------(a=%d)a=123-----(a=%6d)a=+123-----(a=%+6d)a=123-----(a=%-6d)a=123-----(a=%-06d)a=-----(a=%+06d)a=----(a=%+6.6d)a=000123-----(a=%6.6d)a=00123-----(a=%-6.5d)a=0123-----(a=%6.4d)L=65537------(L=%ld)L=1----------(L=%hd)運(yùn)行結(jié)果:L是一長(zhǎng)整型數(shù)65537,其值為十六進(jìn)制0X00010001,所以要將其轉(zhuǎn)換成短整型,即取低16位0x0001,將其輸出,故輸出為1。Why?1.整數(shù)的輸出
無(wú)符號(hào)整數(shù)的輸出
一般形式:
[]:表示可選項(xiàng),可缺省。
|:表示互斥關(guān)系。
#:表示當(dāng)以八進(jìn)制形式輸出數(shù)據(jù)(%o)時(shí),在數(shù)字前輸出0;當(dāng)以十六進(jìn)制形式輸出數(shù)據(jù)(%x或%X)時(shí),在數(shù)字前輸出0x或0X。
.precision的含義與前面介紹的相同,但要注意,在TC和BC下,precision所指定的位數(shù)也包含了0x或0X所占的位數(shù),可在VC下,則不包含0x或0X所占的位數(shù)。其它字段的含義與前面介紹的相同。
說(shuō)明:%[-][#][0][width][.precision][l][h]u|o|x|X輔助格式控制字符(修飾符)
【例】無(wú)符號(hào)整數(shù)的格式化輸出
#include<stdio.h>voidmain(){inta=-1;unsignedu=32767;unsignedlongL=-32768;printf("a=%d,a=%u---(a=%%d,a=%%u)\n",a,a);printf("a=%hx,a=%X---(a=%%hx,a=%%X)\n",a,a);printf("u=%o,u=%X------(u=%%o,u=%%X)\n",u,u);printf("u=%#010X---------(u=%%#010X)\n",u);printf("u=%#10.10X-------(u=%%#10.10X)\n",u);printf("L=%lX-----------(L=%%lX)\n",L);}
a=-1,a=65535---(a=%d,a=%u)a=ffff,a=FFFF---(a=%hx,a=%X)u=77777,u=7FFF------(u=%o,u=%X)u=0X00007FFF---------(u=%#010X)u=0X00007FFF-------(u=%#10.10X)L=FFFF8000-----------(L=%lX)運(yùn)行結(jié)果(在TC2.0下):a=-1,a=---(a=%d,a=%u)a=ffff,a=FFFFFFFF---(a=%hx,a=%X)u=77777,u=7FFF------(u=%o,u=%X)u=0X000
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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-2030年中國(guó)鋁合金防火門窗市場(chǎng)運(yùn)行格局規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)透閃石行業(yè)運(yùn)營(yíng)規(guī)模與發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)蘋果行業(yè)現(xiàn)狀調(diào)研發(fā)展戰(zhàn)略規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)背光模組行業(yè)運(yùn)行狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)硫酸氧釩行業(yè)風(fēng)險(xiǎn)評(píng)估規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)盆花市場(chǎng)十三五規(guī)劃及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)男士化妝品市場(chǎng)規(guī)模分析及發(fā)展建議研究報(bào)告
- 私人手房屋買賣合同
- 2025年博物館翻新工程總承包合同
- 2025年別墅設(shè)計(jì)與施工合同協(xié)議
- 人音版音樂(lè)一年級(jí)上冊(cè)第3課《國(guó)旗國(guó)旗真美麗》說(shuō)課稿
- 腸系膜上動(dòng)脈栓塞護(hù)理查房課件
- GB/T 44255-2024土方機(jī)械純電動(dòng)液壓挖掘機(jī)能量消耗量試驗(yàn)方法
- DL∕T 1785-2017 電力設(shè)備X射線數(shù)字成像檢測(cè)技術(shù)導(dǎo)則
- 山東財(cái)經(jīng)大學(xué)《大學(xué)英語(yǔ)》2022-2023學(xué)年期末試卷
- 融合教育完整版本
- 產(chǎn)品研發(fā)指導(dǎo)專家聘用協(xié)議書
- JT-T-1210.1-2018公路瀝青混合料用融冰雪材料第1部分:相變材料
- 2024年晉中職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)完整參考答案
- DL-T5493-2014電力工程基樁檢測(cè)技術(shù)規(guī)程
- 2024年03月廣東佛山市禪城區(qū)教育系統(tǒng)招考聘用中小學(xué)教師120人筆試歷年典型題及考點(diǎn)剖析附帶答案含詳解
評(píng)論
0/150
提交評(píng)論