C語言 基本數(shù)據(jù)類型、運算符和表達式剖析課件_第1頁
C語言 基本數(shù)據(jù)類型、運算符和表達式剖析課件_第2頁
C語言 基本數(shù)據(jù)類型、運算符和表達式剖析課件_第3頁
C語言 基本數(shù)據(jù)類型、運算符和表達式剖析課件_第4頁
C語言 基本數(shù)據(jù)類型、運算符和表達式剖析課件_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計第2章基本數(shù)據(jù)類型、運算符和表達式11/16/20221第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式C語言程序設(shè)計第2章11/9/2【本章概要】本章主要介紹C語言的基本數(shù)據(jù)類型、常量與變量、運算符及表達式,以及C語言提供的常用庫函數(shù)。11/16/20222第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式【本章概要】本章主要介紹C語言的基本數(shù)據(jù)類型、常量與變量、運2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和表達式第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)11/16/20223第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和計算機中處理的數(shù)據(jù)包括數(shù)字、文字、聲音、圖形、圖像等各種形式。數(shù)據(jù)類型是按數(shù)據(jù)的性質(zhì)、表示形式、占據(jù)存儲空間的多少、構(gòu)造特點來劃分的。2.1數(shù)據(jù)類型為了更好地對數(shù)據(jù)進行存儲和處理,C語言中的數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類11/16/20224第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式計算機中處理的數(shù)據(jù)包括數(shù)字、文字、聲音、圖形、圖像等各種形式整型(int)數(shù)據(jù)類型基本類型整型單精度型(float)字符型(char)長整型(long)短整型(short)實型雙精度型(double)枚舉類型(enum)共用體類型(union)構(gòu)造類型結(jié)構(gòu)體類型(struct)數(shù)組類型空類型(void)指針類型(*)2.1數(shù)據(jù)類型11/16/20225第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式整型(int)數(shù)據(jù)類型基本類型整型單精度型(float)字符基本整型int短整型short或shortint長整型long或longint無符號基本整型unsignedint無符號短整型unsignedshort或unsignedshortint無符號長整型unsignedlong或unsignedlongint

2.1.1整型注意:c語言沒有規(guī)定各種整數(shù)類型的表示范圍,只是規(guī)定了long類型的表示范圍不小于int,但也允許它們表示范圍相同。

11/16/20226第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式基本整型int2.1.12.1.2實型實型數(shù)據(jù)又稱浮點型數(shù)據(jù)。float,單精度浮點數(shù)類型,簡稱浮點類型;double,雙精度浮點數(shù)類型,簡稱雙精度類型;longdouble,長雙精度類型。

所有整數(shù)類型和實數(shù)類型統(tǒng)稱為算術(shù)類型。11/16/20227第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1.2實型實型數(shù)據(jù)又稱浮點型數(shù)據(jù)。所有整數(shù)類型和實數(shù)類字符類型的數(shù)據(jù)即通常的字符。字符類型的數(shù)據(jù)在內(nèi)存中存儲的是它的ASCII碼值,一個字符通常占用一個字節(jié)的內(nèi)存空間。2.1.3字符型11/16/20228第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式字符類型的數(shù)據(jù)即通常的字符。字符類型的數(shù)據(jù)在內(nèi)存中存儲的是它ASCII碼字符的取值范圍是0~127,既可以用char類型表示,也可以用unsignedchar類型表示;在128~255范圍內(nèi)的擴展ASCII碼字符只能用unsignedchar類型表示。C語言規(guī)定字符類型與整型基本一致,分為有符號和無符號兩種類型。2.1.3字符型11/16/20229第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式ASCII碼字符的取值范圍是0~127,既可以用char類型注意:C語言類型的長度完全由編譯器決定,char通常被定義成8位寬;int通常被定義成

16位或

32位寬(或更高),它取決于平臺C語言規(guī)定:long>=int>=short>=char.(這里的">="指類型的寬度大于等于)。2.1.3字符型11/16/202210第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式注意:C語言類型的長度完全由編譯器決定,char通常被定義2.1數(shù)據(jù)類型歷史和特點2.3運算符和表達式第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)2.2變量和常量11/16/202211第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.3運算符和表達式第2章基對于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。與數(shù)據(jù)類型結(jié)合起來分類,分為整型常量、整型變量、浮點常量、浮點變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。2.2變量和常量11/16/202212第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式對于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。變量名代表該變量的存儲單元及其存放的值,系統(tǒng)為不同類型的變量在內(nèi)存中開辟不同的存儲單元,以便存放相應(yīng)類型的值;不同類型的變量存放數(shù)據(jù)的方法也不相同。系統(tǒng)還根據(jù)變量的類型檢查該變量所進行的運算是否合法,例如只有整型變量和整數(shù)才能參與求余(%)運算。2.2.1變量11/16/202213第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式變量名代表該變量的存儲單元及其存放的值,系統(tǒng)為不同類型的變量2.2.1變量1.變量的定義和賦值C語言要求程序中使用的每個變量都必須先定義,然后才能使用。定義變量需要用變量定義語句進行,其形式為:類型變量名[=初值][,變量名[=初值],……];11/16/202214第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.1變量1.變量的定義和賦值11/9/202214第2.2.1變量2.變量中數(shù)據(jù)的存儲C語言中無符號整數(shù)的存儲相對簡單,存儲單元的每個二進制位存放的0或1均表示數(shù)。有符號整數(shù)則用補碼表示實型數(shù)據(jù)是按指數(shù)形式存儲的。用一個字節(jié)(8位二進制信息)存儲字符類型數(shù)據(jù)。注意:可以把字符型數(shù)據(jù)看成是整型數(shù)據(jù)。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。11/16/202215第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.1變量2.變量中數(shù)據(jù)的存儲11/9/202215第2.2.2常量常量可分為直接常量和符號常量,其中直接常量包括:整型常量、實型常量、字符型常量、字符串常量。11/16/202216第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量常量可分為直接常量和符號常量,其中直接常量包2.2.2常量1.整型常量整型常量有三種表示方法:(1)十進制整數(shù):如154、565、-6523。(2)八進制整數(shù):以0開頭的數(shù)是八進制數(shù)。(3)十六進制整數(shù):以0x開頭的數(shù)是十六進制數(shù)。在上述方法表示的整數(shù)后面附一個字母l或L作后綴,即可表示該數(shù)據(jù)的類型是長整型的。注意:長整型數(shù)據(jù)和普通整型數(shù)據(jù)的區(qū)別。

11/16/202217第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量1.整型常量11/9/202217第1章2.2.2常量2.實型常量在C語言中,把帶小數(shù)的數(shù)稱為實數(shù)或浮點數(shù)。實型常量只能用十進制形式表示,不能用八進制和十六進制形式表示。實型常量有兩種表示方法:小數(shù)形式:由數(shù)字和小數(shù)點組成,如3.1415926、-0.12、.4、3.等都是實數(shù)。(2)指數(shù)形式:如1.23e5或12.3E4都代表1.23x105。注意:字母e(或E)之前必須有數(shù)字,且e后面指數(shù)必須為整數(shù),如e3、2.1e3.2、e等都不是合法的指數(shù)形式。

11/16/202218第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量2.實型常量11/9/202218第1章2.2.2常量3.字符常量字符型常量是由一對單引號括起來的單個字符構(gòu)成,在C語言中,字符常量有以下特點:(1)字符常量只能用單引號括起來,不能用雙引號或其它括號。(2)字符常量只能是單個字符,不能是字符串。(3)字符可以是字符集中任意字符。一個字符型常量的值是該字符集中對應(yīng)的ASCII編碼值。顯然'5'和5是不同的。11/16/202219第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量3.字符常量11/9/202219第1章2.2.2常量表2-3轉(zhuǎn)義字符表字符形式功能\n換行,將光標從當前位置移到下一行開頭\t橫向跳格,光標跳到下一個水平制表位\b退格\r回車,將光標從當前位置移到本行開頭\f換頁,將光標從當前位置移到下一頁開頭\\反斜杠字符“\”\'單引號字符“'”\"雙引號字符“"”\ddd1到3位8進制數(shù)所代表的字符\xhh1到2位16進制數(shù)所代表的字符11/16/202220第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量表2-3轉(zhuǎn)義字符表字符功4.字符串常量C語言中沒有專門的字符串類型的變量,但有字符串常量。字符串常量由一對雙引號括起來的字符序列組成,如“abc”、“a”等都是字符串常量。雙引號僅起定界符的作用。字符串常量與字符常量的區(qū)別:(1)字符常量由單引號括起來,字符串常量由雙引號括起來。(2)字符常量占一個字節(jié)的內(nèi)存空間。字符串常量在內(nèi)存中存儲時由系統(tǒng)自動在存儲的所有字符尾部添加串結(jié)束標記'\0',所以,字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符所占的字節(jié)數(shù)加1。2.2.2常量11/16/202221第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式4.字符串常量2.2.2常量11/9/202221第1章5.符號常量符號常量就是使用符號代表常量。C語言中允許用標識符定義一個常量,這種常量定義在C語言中被稱之為“宏定義”,其一般形式為:#define標識符常量其中#define是一條預(yù)處理命令,稱為宏定義命令,其功能是把該標識符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標識符的地方均代之以該常量值。習(xí)慣上,符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。2.2.2常量11/16/202222第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式5.符號常量2.2.2常量11/9/202222第1章2.1數(shù)據(jù)類型歷史和特點2.2變量和常量第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)2.3運算符和表達式11/16/202223第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.2變量和常量第2章基本數(shù)2.3.1運算符1.基本的算術(shù)運算符C語言中基本的算術(shù)運算符共有5種:+(加),-(減),*(乘),/(除),%(取模,或稱求余運算符)C語言規(guī)定:(1)%運算符僅用于整型變量或整型常量的運算,a%b的結(jié)果為a除以b的余數(shù),余數(shù)的符號與被除數(shù)相同,如:7%3的結(jié)果為1;7%-3的結(jié)果為1;-7%3的結(jié)果為-1。(2)+、-、*、/運算符的兩個操作數(shù)既可以是整數(shù),也可以是實數(shù)。當兩個操作數(shù)均是整數(shù)時,結(jié)果仍是整數(shù);若參加運算的兩個操作數(shù)中有一個是實數(shù),則結(jié)果為double型,因為所有實數(shù)都按double型進行運算。(3)當對兩個整型的數(shù)據(jù)相除時結(jié)果為整數(shù)。11/16/202224第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符1.基本的算術(shù)運算符11/9/202222.3.1運算符2.自增、自減運算符

自增運算符++和自減運算符--是C語言中兩個較為獨特的單目運算符,具有右結(jié)合性。它們既可以放在操作數(shù)前,也可以放在操作數(shù)后,并且操作對象只能是變量,不能是常量或表達式。如5++,++(a+b)等都是錯誤的。自增自減運算符的作用是將操作對象的值增加1或減去1。如:i++,i--/*表示在使用i值之后將i的值加(減)1*/++i,--i/*表示在使用i值之前將i的值加(減)1*/11/16/202225第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符2.自增、自減運算符11/9/202222.3.1運算符3.賦值運算符C語言中,賦值被認為是一種運算,由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。其形式是:<變量><賦值運算符><表達式>賦值運算符為“=”,它的作用是將賦值運算符右邊表達式或常量的值賦給其左邊的變量。賦值表達式的值就是被賦值的變量的值。例如:a=6這個賦值表達式的值是6(變量a的值也是6)。賦值表達式的值也可以再賦給其它變量,如:a=(b=3+5),括號內(nèi)的b=3+5是一個賦值表達式,其值為8,所以a的值為8,整個表達式的值也為8。11/16/202226第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符3.賦值運算符11/9/202226第1章2.3.1運算符4.復(fù)合賦值運算符C語言允許在賦值運算符“=”之前加上其他運算符以構(gòu)成復(fù)合的賦值運算符。例如:a+=5; 等價于a=a+5;a*=b+5; 等價于a=a*(b+5);凡是雙目運算符,都可以和賦值運算符一起組合成復(fù)合的賦值運算符。在C語言中,可以使用的復(fù)合賦值運算符有:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=11/16/202227第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符4.復(fù)合賦值運算符11/9/202227第2.3.1運算符5.關(guān)系運算符關(guān)系運算實際上就是比較運算。比較兩個量的運算符就稱為關(guān)系運算符。在C語言中為我們提供了6種關(guān)系運算符:<小于<=小于或等于>大于>=大于或等于==等于!=不等于關(guān)系運算符都是雙目運算符,要求兩個操作數(shù)是同一種數(shù)據(jù)類型,其結(jié)果為邏輯值。即關(guān)系成立時,其值為真,按C語言的習(xí)慣,用非0值(一般用1)表示;關(guān)系不成立時,其值為假,用0表示。11/16/202228第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符5.關(guān)系運算符11/9/202228第1章6.邏輯運算符C語言中為我們提供了三種邏輯運算符,分別是:&&與運算||或運算!非運算其中,與運算符&&和或運算符||均為雙目運算符,非運算符!為單目運算符。例如:a&&b當a,b都為真時,結(jié)果為真a||b當a,b都為假時,結(jié)果為假!a當a為真時,結(jié)果為假;當a為假時,結(jié)果為真2.3.1運算符11/16/202229第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式6.邏輯運算符2.3.1運算符11/9/202229第1章2.3.1運算符7.位運算位運算符是以單獨的二進制位為操作對象的運算。也就是說,其操作數(shù)是二進制數(shù)。C語言中提供的位運算符有:按位與(&)、按位或(|)、按位異或(^)、按位取反(~)、左移(<<)、右移(>>),11/16/202230第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符7.位運算11/9/202230第1章2.3.1運算符8.求字節(jié)數(shù)運算符sizeof是C語言的一種單目操作符,并不是函數(shù)。sizeof操作符以字節(jié)形式給出了其操作數(shù)的存儲大小。操作數(shù)可以是一個表達式或括在括號內(nèi)的類型名。sizeof可以用于數(shù)據(jù)類型和變量。關(guān)于sizeof的結(jié)果:①操作數(shù)具有類型char、unsignedchar或signedchar,其結(jié)果等于1。因為ANSIC正式規(guī)定字符類型為1字節(jié)。②int、unsignedint、shortint、unsignedshort、longint、unsignedlong、float、double、longdouble類型的sizeof在ANSIC中沒有具體規(guī)定,大小依賴于實現(xiàn),一般可能分別為2、2、2、2、4、4、4、8、10。

11/16/202231第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符8.求字節(jié)數(shù)運算符11/9/202231第2.3.1運算符9.逗號運算符用逗號運算符可以將兩個表達式連接起來,所形成的就是逗號表達式,其一般形式為:表達式1,表達式2逗號表達式的求值過程是:先求表達式1的值,再求表達式2的值,表達式2的值就是整個逗號表達式的值。逗號表達式的一般形式可以擴展為:表達式1,表達式2,表達式3,…,表達式n表達式n的值為整個表達式的值。11/16/202232第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符9.逗號運算符11/9/202232第1章2.3.1運算符10.條件運算符條件運算符是三目運算符,要求有3個操作對象,并且三個操作對象都是表達式。條件表達式的其一般形式為:表達式1?表達式2:表達式3

條件運算的求值規(guī)則為:計算表達式1的值,若表達式1的值為真,則以表達式2的值作為整個條件表達式的值,否則以表達式3的值作為整個條件表達式的值。注意:(1)條件表達式中,表達式1通常為關(guān)系或邏輯表達式,表達式2、3的類型可以是數(shù)值表達式、賦值表達式、函數(shù)表達式或條件表達式。(2)條件表達式的結(jié)果類型:表達式2和表達式3中的較高者。11/16/202233第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符10.條件運算符11/9/202233第12.3.2表達式表達式由運算符和操作數(shù)構(gòu)成。操作數(shù)可以是常量和變量。表達式的類型就是表達式計算結(jié)果的類型?;旌嫌谕槐磉_式中的不同類型常量及變量,應(yīng)均變換為同一類型的量。C語言的編譯程序?qū)⑺胁僮鲾?shù)變換為與最大類型操作數(shù)同類型。11/16/202234第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.2表達式表達式由運算符和操作數(shù)構(gòu)成。操作數(shù)可以是常2.3.2表達式C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。若一個運算對象兩側(cè)的運算符的優(yōu)先級別相同,如a-b+c,則按規(guī)定的“結(jié)合方向”處理。C規(guī)定了各種運算符的結(jié)合方向。算術(shù)運算符的結(jié)合方向為“自左至右”,又成為左結(jié)合性,即先左后右,因此b先與減號結(jié)合,執(zhí)行a-b的運算,再執(zhí)行加c的運算。以后可以看到有些運算符的結(jié)合方向為“自右至左”,即右結(jié)合性。關(guān)系運算符的優(yōu)先級低于算術(shù)運算符,關(guān)系運算符中>、>=、<、<=優(yōu)先級相同;!=和==的優(yōu)先級相同,但低于前四種。關(guān)系運算符的結(jié)合性均為左結(jié)合,若有多個關(guān)系運算同時進行時,先按優(yōu)先級次序運算,優(yōu)先級相同時從左向右計算。11/16/202235第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.2表達式C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。在表達邏輯運算符中,非運算符(?。┖蛦文康乃阈g(shù)運算符同級,高于雙目的算術(shù)運算符,優(yōu)先于關(guān)系運算符,優(yōu)先于邏輯運算符與(&&)和或(||),與(&&)運算高于或(||)運算。邏輯運算符中,非運算符(?。┑慕Y(jié)合性為右結(jié)合;與運算(&&)和或運算(||)的結(jié)合性為左結(jié)合。條件運算符的優(yōu)先級低于關(guān)系運算符和算術(shù)運算符,高于賦值運算符。因此,表達式max=(a>b)?a:b可以去掉括號,寫為max=a>b?a:b,執(zhí)行時意義是相同的。條件運算符的結(jié)合方向是自右至左。2.3.2表達式11/16/202236第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式邏輯運算符中,非運算符(?。┖蛦文康乃阈g(shù)運算符同級,高于雙目賦值運算符和復(fù)合賦值運算符的優(yōu)先級相同,且都具有右結(jié)合性。它們的優(yōu)先級除了比逗號運算符的優(yōu)先級高以外,比其它運算符的優(yōu)先級都低。逗號運算符是所有運算符中級別最低的。例如:逗號表達式:x=2,4*5運算時,先算第一個賦值表達式x=2,再算算術(shù)表達式4*5,最后算整個逗號表達式的值。逗號表達式的值為算術(shù)表達式的值20。2.3.2表達式11/16/202237第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式賦值運算符和復(fù)合賦值運算符的優(yōu)先級相同,且都具有右結(jié)合性。它2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和表達式第2章基本數(shù)據(jù)類型、運算符和表達式2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)2.4數(shù)據(jù)類型轉(zhuǎn)換11/16/202238第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和C語言允許不同數(shù)據(jù)類型相互轉(zhuǎn)換。類型轉(zhuǎn)換有三種方式:自動類型轉(zhuǎn)換、賦值類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。11/16/202239第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式C語言允許不同數(shù)據(jù)類型相互轉(zhuǎn)換。11/9/202239第1章2.4.1類型自動轉(zhuǎn)換高doublefloat

long

unsigned

低intchar,short11/16/202240第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.4.1類型自動轉(zhuǎn)換高double2.4.2賦值類型轉(zhuǎn)換賦值運算時,如果賦值運算符兩側(cè)的類型(指基本類型)不一致,系統(tǒng)自動將表達式的值轉(zhuǎn)換成變量的類型存到變量的存儲單元,轉(zhuǎn)換的結(jié)果可能出現(xiàn)以下情況:(1)當整型數(shù)據(jù)賦給浮點型變量時,數(shù)值上不發(fā)生任何變化,但有效位增加。如:floatf;f=16;/*內(nèi)存中變量f的值為16.000000*/(2)當單、雙精度浮點型數(shù)據(jù)賦給整型變量時,浮點數(shù)的小數(shù)部分將被舍棄。如:inta;a=8.38;/*內(nèi)存中變量a的值為8*/11/16/202241第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.4.2賦值類型轉(zhuǎn)換賦值運算時,如果賦值運算符兩側(cè)的類型2.4.2賦值類型轉(zhuǎn)換(3)將字符型數(shù)據(jù)賦給整型變量時,由于字符只占一個字節(jié),而整型變量為2個字節(jié),因此將字符數(shù)據(jù)(8位)放到整型變量低8位中。有兩種情況:①將unsignedchar型數(shù)據(jù)賦給unsignedint或int型變量時,高8位補0。②將char型數(shù)據(jù)賦給unsignedint或int型變量時,若字符值最高位為0,則高8位補0;若字符值最高位為1,則高8位全補1。實際上,長度短的整型數(shù)據(jù)賦給長度長的變量時,都有類似的處理方法。如unsignedint型數(shù)據(jù)賦給unsignedlong或long型變量時,處理方法類似情況①,即將高16位補0;int型數(shù)據(jù)賦給unsignedlong或long型變量時,處理方法類似情況②,對高16位分情況處理。11/16/202242第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.4.2賦值類型轉(zhuǎn)換(3)將字符型數(shù)據(jù)賦給整型變量時,2.4.2賦值類型轉(zhuǎn)換(4)當長度長的整型數(shù)據(jù)賦給長度短的變量時,將進行截斷賦值。如將一個long型數(shù)據(jù)賦給一個int或unsignedint型變量時,只將long型數(shù)據(jù)的低16位原封不動送到變量中。(5)當整型數(shù)據(jù)賦給長度相同的變量時,將進行原樣賦值。11/16/202243第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.4.2賦值類型轉(zhuǎn)換(4)當長度長的整型數(shù)據(jù)賦給長度短2.4.3強制類型轉(zhuǎn)換可以利用強制類型轉(zhuǎn)換運算符將一個表達式強制轉(zhuǎn)換成所需類型。強制類型轉(zhuǎn)換的一般形式為:(類型名)(表達式)【注意】(1)表達式應(yīng)該用括號括起來。例如:(int)(a+b);/*表示將表達式a+b結(jié)果的類型強制轉(zhuǎn)換成int型*/(int)a+b;/*表示將變量a的類型強制轉(zhuǎn)換成int型后,再進行運算*/(2)經(jīng)強制類型轉(zhuǎn)換后,得到的是一個所需類型的中間變量,原來變量的類型并沒有發(fā)生任何變化。11/16/202244第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.4.3強制類型轉(zhuǎn)換可以利用強制類型轉(zhuǎn)換運算符將一個表達2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和表達式第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.6內(nèi)部函數(shù)2.5數(shù)據(jù)的輸入輸出11/16/202245第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和C語言的輸入和輸出功能由標準輸入輸出庫函數(shù)來實現(xiàn)。stdio.h是標準的輸入輸出函數(shù)庫頭文件,包括putchar(輸出字符),getchar(輸入字符),printf(格式輸出),scanf(格式輸入),puts(輸出字符串),gets(輸入字符串)等函數(shù)。考慮到printf、scanf使用頻繁,系統(tǒng)允許在使用這兩個函數(shù)時可省略#include命令。而使用其他函數(shù)必須使用預(yù)編譯命令“#include”,將有關(guān)的“頭文件”包含到用戶源文件中,#include命令一般放在程序的開頭。11/16/202246第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式C語言的輸入和輸出功能由標準輸入輸出庫函數(shù)來實現(xiàn)。stdi2.5.1格式化輸出函數(shù)printfprintf函數(shù)的功能是向系統(tǒng)指定的設(shè)備輸出若干個任意類型的數(shù)據(jù)。1.printf函數(shù)調(diào)用形式printf函數(shù)是一個標準庫函數(shù),其調(diào)用的一般形式:printf(格式控制字符串,輸出列表);(1)格式控制字符串是用雙引號括起來的字符串,它包括兩個信息:①格式說明部分。由“%”開頭和格式字符結(jié)尾,如%d,%c,%f等。它的作用是將要輸出的數(shù)據(jù)轉(zhuǎn)化成指定的格式輸出,格式說明都是由“%”字符開始的。②一般字符(非格式字符)。即按原樣輸出的字符,在顯示時起提示作用。它由普通字符和轉(zhuǎn)義字符構(gòu)成。如:printf("\na=%d\n",a);/*雙引號內(nèi)換行符、字符c=都是原樣輸出字符*/11/16/202247第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.1格式化輸出函數(shù)printfprintf函數(shù)的功能2.5.1格式化輸出函數(shù)printf(2)輸出列表是需要輸出的一些數(shù)據(jù),如變量、函數(shù)、表達式。輸出列表的個數(shù)與格式說明符的個數(shù)一般應(yīng)保持一致。如:11/16/202248第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.1格式化輸出函數(shù)printf(2)輸出列表是需要2.5.1格式化輸出函數(shù)printf2.格式說明格式說明符由“%”開頭,以一個英文字母結(jié)束,它表明輸出數(shù)據(jù)的類型;其間還可以有一些格式控制字符,用以說明數(shù)據(jù)輸出的長度、位數(shù)、對齊方式等。%[-][+][0][#][輸出數(shù)據(jù)最小寬度m][.精度n][數(shù)據(jù)長度]類型其中:[]:表示可選項。格式控制字符-、+、0、#的具體含義如表2-5所示。11/16/202249第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.1格式化輸出函數(shù)printf2.格式說明11/9/2.5.1格式化輸出函數(shù)printf表2-5printf函數(shù)常用附加格式符字符形式字符含義+表示輸出時輸出數(shù)值的符號(+或-)且數(shù)值右對齊,左邊補空格,缺省時表示若輸出正值,則前面是空格,若是負數(shù),則在數(shù)值前面輸出負號(-)-表示輸出時,數(shù)值左對齊,右邊補空格0表示輸出時,在數(shù)值的前面多余的空格用0來代替#對格式字符O(八進制)數(shù)字前加0,對格式字符x或X(十六進制)數(shù)字前加0x或0X11/16/202250第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.1格式化輸出函數(shù)printf表2-5printf2.5.1格式化輸出函數(shù)printf

[輸出數(shù)據(jù)最小寬度m]:m是十進制整數(shù),它表示用十進制輸出的最少位數(shù),當需要輸出的數(shù)據(jù)長度超過該數(shù)時,該選項不起作用,數(shù)據(jù)按實際位數(shù)進行輸出,當需要輸出的數(shù)據(jù)長度小于該數(shù)時,則在該數(shù)的左邊補空格或0。[.精度n]:是“.”加上十進制整數(shù)n。其含義是:如果輸出的是數(shù)值,則該數(shù)表示小數(shù)位數(shù),若實際位數(shù)大于所定義的精度,則截去超過部分;如果輸出的是字串,則表示輸出字符的個數(shù)。[數(shù)據(jù)長度]:是字符,它有兩種形式:h、l。h表示按短整型量輸出,l表示按長整型量輸出。類型:是格式說明符中必須要有的,它表示輸出列表里要輸出的數(shù)據(jù)類型。表2-6給出了常用的類型格式符及含義。11/16/202251第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.1格式化輸出函數(shù)printf[輸出數(shù)據(jù)最小寬度m2.5.1格式化輸出函數(shù)printf表2-6printf函數(shù)常用類型格式符表格式字符形式格式字符含義d(或i)表示以十進制形式輸出一個帶符號的整數(shù)(默認正數(shù)不輸出符號)o表示以八進制形式輸出一個無符號的整數(shù)(默認不輸出前導(dǎo)符0)x(或X)表示以十六進制形式輸出一個無符號的整數(shù),用x則輸出十六進制的a~f時以小寫形式輸出,用X則凡以大寫形式輸出,(默認不輸出前導(dǎo)符0x或0X)u表示以十進制形式輸出一個無符號的整數(shù)f表示以小數(shù)形式輸出帶符號的實數(shù)(包括單、雙精度),默認輸出6位小數(shù)e(或E)表示以指數(shù)形式輸出,默認小數(shù)點前1位非0整數(shù),5位小數(shù)。g(或G)表示選擇%f或%e格式輸出實數(shù)(選擇占寬度較小的一種格式,不輸出無意義的0)c表示輸出一個單字符s表示輸出一個字符串%表示輸入百分號本身11/16/202252第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.1格式化輸出函數(shù)printf表2-6printf2.5.1格式化輸出函數(shù)printf在使用printf函數(shù)時,要注意以下幾個問題:(1)在格式控制字符串中可包“轉(zhuǎn)義字符”,如'\n'、'\t'、'\r'、'\b'、'\377'等。(2)控制輸出類型的格式符除X(表示輸出的十六進制數(shù)用大寫字母輸出)、E(表示輸出的指數(shù)e用大寫字母E輸出)、G(表示若選用指數(shù)形式輸出,則用大寫字母E輸出)外,其余必須是小寫字母,如%d不能寫成%D。(3)若想輸出字符“%”,則在格式字符串中用連續(xù)兩個%表示。如:printf("%f%%",1.0/4);則輸出:0.250000%11/16/202253第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.1格式化輸出函數(shù)printf在使用printf函數(shù)(4)輸出是從右向左計算輸出項后,按格式說明的順序?qū)?yīng)輸出。一般格式說明和輸出項的個數(shù)和類型應(yīng)相同,如不匹配系統(tǒng)并不報錯,系統(tǒng)將按以下操作。a、格式說明的個數(shù)少于輸出項的個數(shù),多余的輸出項將不輸出;格式說明的個數(shù)多于輸出項的個數(shù),多余的格式說明將輸出隨機的值。b、整型數(shù)據(jù)按%f輸出,出現(xiàn)運行錯誤;實型數(shù)據(jù)按%d輸出,運行錯結(jié)果為0;

2.5.1格式化輸出函數(shù)printf11/16/202254第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式(4)輸出是從右向左計算輸出項后,按格式說明的順序?qū)?yīng)輸出。2.5.2格式化輸入函數(shù)scanfscanf函數(shù)的功能是從鍵盤上將數(shù)據(jù)按用戶指定的格式輸入并賦給指定的變量。1.scanf函數(shù)調(diào)用形式scanf函數(shù)是一個標準庫函數(shù),其調(diào)用的一般形式:scanf(格式控制字符串,地址列表);其中格式控制字符串的定義與使用方法和printf函數(shù)大致相同,但不能顯示非格式字符串,即不能顯示提示字符串。地址列表是要賦值的各變量地址。地址是由地址運算符“&”后跟變量名組成,如&x表示變量x的地址。&是取地址運算符,其作用是求變量的地址。11/16/202255第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.2格式化輸入函數(shù)scanfscanf函數(shù)的功能是從2.5.2格式化輸入函數(shù)scanf2.格式說明符與printf函數(shù)中的格式說明符相似,以%開始,后面跟一個格式符,中間可以有若干個附加字符,格式字符串的一般形式為:%[*][輸入數(shù)據(jù)寬度m][長度]類型其中:[]:表示可選項*:表示輸入的數(shù)值不賦給相應(yīng)的變量,即跳過該數(shù)據(jù)不讀。[輸入數(shù)據(jù)寬度m]:m是十進制正整數(shù),表示按m的寬度輸入數(shù)據(jù)。[長度]:長度格式符為l和h,l表示輸入長整型數(shù)據(jù)或雙精度實型數(shù)據(jù);h表示輸入短整型數(shù)據(jù)。11/16/202256第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.2格式化輸入函數(shù)scanf2.格式說明符11/9/2.5.2格式化輸入函數(shù)scanf類型:是格式說明符中必須要有的,其格式符的意義與printf函數(shù)基本相同表2-7scanf函數(shù)常用類型格式符表格式字符形式格式字符含義d,i表示以十進制形式輸入一個整數(shù)o表示以八進制形式輸入一個整數(shù)x(X)表示以十六進制形式輸入一個整數(shù)u表示以十進制形式輸入一個無符號的整數(shù)f或e(E)表示輸入一個實數(shù),可以是小數(shù)形式或指數(shù)形式g(G)與f或e的作用相同c表示輸入一個字符s表示輸入一個字符串11/16/202257第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.2格式化輸入函數(shù)scanf類型:是格式說明符中必須2.5.2格式化輸入函數(shù)scanf說明:(1)對unsigned型變量所需的數(shù)據(jù),可以用%u,%d,%o,或%x格式輸入;(2)可以指定輸入數(shù)據(jù)所占列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。(3)如果在一個%后有一個*附加說明符,表示跳過它指定的列數(shù)。(4)輸入數(shù)據(jù)時不能規(guī)定數(shù)據(jù)的精度。例如scanf("%8.2f",&a);是不合法的。11/16/202258第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.2格式化輸入函數(shù)scanf說明:11/9/20222.5.2格式化輸入函數(shù)scanf在使用scanf函數(shù)時,要注意以下幾個問題:scanf函數(shù)中的“格式控制字符串”后面應(yīng)該是變量的地址,而不應(yīng)是變量名,這是C語言與其他高級語言不同的地方。例如不能將語句scanf(“%d,%d”,&a,&b);寫成scanf(“%d,%d”,a,b);,這是初學(xué)者容易出錯的地方。(2)在“格式控制字符串”中除了格式說明符外,還有其他字符,則在輸入數(shù)據(jù)時在對應(yīng)位置上應(yīng)輸入與這些字符相同的字符。例如scanf("a=%d,b=%d",&a,&b);則輸入時應(yīng)輸入:a=12,b=-2↙其他任何輸入形式都不正確。11/16/202259第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.2格式化輸入函數(shù)scanf在使用scanf函數(shù)時,(3)輸入數(shù)據(jù)時,遇到以下情況認為該數(shù)據(jù)輸入結(jié)束:①按指定的寬度結(jié)束;②遇空格,或“回車”鍵,或“Tab”鍵;③遇到非法輸入。如:scanf("%3d%d%c%f",&a,&b,&str,&c);若輸入:12345a234o.78↙第一個數(shù)據(jù)取3位,即將123賦給變量a。45后面遇字母a,表示45后沒有數(shù)據(jù)了,因此將45賦給第二個變量b。字符'a'賦給第三個變量str。由于%c要求只能輸入一個字符,因此輸入字符a之后不需要加空格,直接將后面的數(shù)據(jù)賦給第四個變量c。由于將數(shù)據(jù)2340.78錯輸入成234o.78,即在234后面出現(xiàn)了字母'o',因此就認為該數(shù)據(jù)到此結(jié)束,所以將234賦給變量c。2.5.2格式化輸入函數(shù)scanf11/16/202260第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式(3)輸入數(shù)據(jù)時,遇到以下情況認為該數(shù)據(jù)輸入結(jié)束:2.5.(4)在用“%c”格式輸入字符時,所有輸入的字符(包括空格字符和“轉(zhuǎn)義字符”)都作為有效字符。例如:scanf("%c%c%c",&a,&b,&c);若輸入為:a□b□c↙則把字符a賦給變量a,把字符空格賦給變量b,把字符b賦給變量c。(5)當輸出的類型格式符與數(shù)據(jù)的類型不一致時,雖然編譯沒有提示出錯,但結(jié)果有可能不正確。2.5.2格式化輸入函數(shù)scanf11/16/202261第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式(4)在用“%c”格式輸入字符時,所有輸入的字符(包括空格2.5.3字符數(shù)據(jù)的輸入與輸出1.字符輸入函數(shù)getchar字符輸入函數(shù)getchar()的功能是從標準設(shè)備(鍵盤)上讀入一個字符。其一般調(diào)用形式:getchar();該函數(shù)沒有參數(shù),但一對圓括號不能省略。getchar()只能從鍵盤上接收一個字符,其常用形式:ch=getchar()與scanf(“%c”,&ch)等價。在使用這個函數(shù)時,程序的頭部一定要加上文件包含命令:#include<stdio.h>11/16/202262第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.3字符數(shù)據(jù)的輸入與輸出1.字符輸入函數(shù)getcha2.5.3字符數(shù)據(jù)的輸入與輸出2.字符輸出函數(shù)putchar函數(shù)putchar()的功能是向標準輸出設(shè)備(顯示器)輸出一個字符。其一般調(diào)用形式:putchar(c);其中c是參數(shù),它可以是整型或字符型變量,也可以是整型或字符型常量或表達式。當是整型量時,輸出以該數(shù)值作為ASCII碼所對應(yīng)的字符;當是字符型量時,直接輸出字符。其功能和printf(“%c”,c)等價。11/16/202263第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.3字符數(shù)據(jù)的輸入與輸出2.字符輸出函數(shù)putcha2.5.4字符串的輸入與輸出1.字符串輸入函數(shù)getsgets()函數(shù)用來從標準輸入設(shè)備(鍵盤)讀取字符串直到回車結(jié)束,但回車符不屬于這個字符串。調(diào)用格式為:gets(s);其中s為字符串變量(字符串數(shù)組名或字符串指針)。gets(s)函數(shù)與scanf("%s",&s)相似,但不完全相同,使用scanf("%s",&s)函數(shù)輸入字符串時存在一個問題,就是如果輸入了空格會認為輸入字符串結(jié)束,空格后的字符將作為下一個輸入項處理,但gets()函數(shù)將接收輸入的整個字符串直到回車為止。11/16/202264第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.4字符串的輸入與輸出1.字符串輸入函數(shù)gets112.5.4字符串的輸入與輸出2.字符串輸出函數(shù)putsputs()函數(shù)用來向標準輸出設(shè)備(屏幕)寫字符串并換行,其調(diào)用格式為:puts(s);其中s為字符串變量(字符串數(shù)組名或字符串指針)。puts()函數(shù)的作用與語句printf(“%s\n”,s)相同。但puts()函數(shù)只能輸出字符串,不能輸出數(shù)值或進行格式變換。另外,可以將字符串直接寫入puts()函數(shù)中。例如:puts("Hello,TurboC2.0");11/16/202265第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.5.4字符串的輸入與輸出2.字符串輸出函數(shù)puts112.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和表達式第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)11/16/202266第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和2.6內(nèi)部函數(shù)C語言提供的函數(shù)以庫文件的形式存放在系統(tǒng)中。用戶在使用函數(shù)庫時無需定義和說明,只需在程序前包含該函數(shù)原型的頭文件,就可以在程序中直接使用。使用庫函數(shù)應(yīng)清楚四個方面的內(nèi)容:①函數(shù)的功能及所能完成的操作,②參數(shù)的數(shù)目和順序,以及每個參數(shù)的意義及類型,③返回值的意義及類型,④需要使用的包含文件。11/16/202267第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.6內(nèi)部函數(shù)C語言提供的函數(shù)以庫文件的形式存放在系統(tǒng)中。2.6內(nèi)部函數(shù)常見的有九大類庫函數(shù):I/O函數(shù)、字符串、內(nèi)存和字符函數(shù)、數(shù)學(xué)函數(shù)、時間、日期和與系統(tǒng)有關(guān)的函數(shù)、動態(tài)存儲分配、目錄管理、過程控制、字符屏幕和圖形功能、其它函數(shù)。11/16/202268第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.6內(nèi)部函數(shù)常見的有九大類庫函數(shù):11/9/2022682.6內(nèi)部函數(shù)1、用include命令(#開頭,后面沒有;)如:#include“stdio.h”//或#include<stdio.h>#include“math.h”2、調(diào)用形式:函數(shù)名(參數(shù)表)如:y=sqrt(x);ch=getchar();printf(“jhfjdg\n”);11/16/202269第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.6內(nèi)部函數(shù)1、用include命令(#開頭,后面沒有;2.6內(nèi)部函數(shù)函數(shù)名函數(shù)原型功能函數(shù)說明absintabs(intnum)計算整數(shù)num的絕對值acosdoubleacos(doublex);計算cos–1(x)的值x在–1~1范圍內(nèi)asindoubleasin(doublex);計算sin–1(x)的值x在–1~1范圍內(nèi)cosdoublecos(doublex);計算cos(x)的值x的單位為弧度expdoubleexp(doublex);求ex的值fabsdoublefabs(doublex);求x的絕對值floordoublefloor(doublex);求不大于x的最大整數(shù)其值為雙精度整數(shù)powdoublepow(doublex,y);計算xy

的值11/16/202270第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.6內(nèi)部函數(shù)函數(shù)名函數(shù)原型功能函數(shù)說明absintabrandintrand()產(chǎn)生一個偽隨機數(shù)返回值為1~32767randomintrandom(intn)產(chǎn)生0~n之間的隨機數(shù)sinsin(doublex);計算sinx的值x的單位為弧度sqrtsqrt(doublex);計算x的平方根x應(yīng)大于等于0exitvoidexit(intstatus);終止程序運行systemintsystem(char*cmd)發(fā)出一個DOS命令clockclock_tclock(void)確定所用的處理器時間timetime_ttime(time_t*tp)獲取系統(tǒng)時間11/16/202271第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式randintrand()產(chǎn)生一個偽隨機數(shù)返回值為1~C語言程序設(shè)計第2章基本數(shù)據(jù)類型、運算符和表達式11/16/202272第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式C語言程序設(shè)計第2章11/9/2【本章概要】本章主要介紹C語言的基本數(shù)據(jù)類型、常量與變量、運算符及表達式,以及C語言提供的常用庫函數(shù)。11/16/202273第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式【本章概要】本章主要介紹C語言的基本數(shù)據(jù)類型、常量與變量、運2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和表達式第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)11/16/202274第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.2變量和常量2.3運算符和計算機中處理的數(shù)據(jù)包括數(shù)字、文字、聲音、圖形、圖像等各種形式。數(shù)據(jù)類型是按數(shù)據(jù)的性質(zhì)、表示形式、占據(jù)存儲空間的多少、構(gòu)造特點來劃分的。2.1數(shù)據(jù)類型為了更好地對數(shù)據(jù)進行存儲和處理,C語言中的數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類11/16/202275第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式計算機中處理的數(shù)據(jù)包括數(shù)字、文字、聲音、圖形、圖像等各種形式整型(int)數(shù)據(jù)類型基本類型整型單精度型(float)字符型(char)長整型(long)短整型(short)實型雙精度型(double)枚舉類型(enum)共用體類型(union)構(gòu)造類型結(jié)構(gòu)體類型(struct)數(shù)組類型空類型(void)指針類型(*)2.1數(shù)據(jù)類型11/16/202276第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式整型(int)數(shù)據(jù)類型基本類型整型單精度型(float)字符基本整型int短整型short或shortint長整型long或longint無符號基本整型unsignedint無符號短整型unsignedshort或unsignedshortint無符號長整型unsignedlong或unsignedlongint

2.1.1整型注意:c語言沒有規(guī)定各種整數(shù)類型的表示范圍,只是規(guī)定了long類型的表示范圍不小于int,但也允許它們表示范圍相同。

11/16/202277第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式基本整型int2.1.12.1.2實型實型數(shù)據(jù)又稱浮點型數(shù)據(jù)。float,單精度浮點數(shù)類型,簡稱浮點類型;double,雙精度浮點數(shù)類型,簡稱雙精度類型;longdouble,長雙精度類型。

所有整數(shù)類型和實數(shù)類型統(tǒng)稱為算術(shù)類型。11/16/202278第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1.2實型實型數(shù)據(jù)又稱浮點型數(shù)據(jù)。所有整數(shù)類型和實數(shù)類字符類型的數(shù)據(jù)即通常的字符。字符類型的數(shù)據(jù)在內(nèi)存中存儲的是它的ASCII碼值,一個字符通常占用一個字節(jié)的內(nèi)存空間。2.1.3字符型11/16/202279第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式字符類型的數(shù)據(jù)即通常的字符。字符類型的數(shù)據(jù)在內(nèi)存中存儲的是它ASCII碼字符的取值范圍是0~127,既可以用char類型表示,也可以用unsignedchar類型表示;在128~255范圍內(nèi)的擴展ASCII碼字符只能用unsignedchar類型表示。C語言規(guī)定字符類型與整型基本一致,分為有符號和無符號兩種類型。2.1.3字符型11/16/202280第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式ASCII碼字符的取值范圍是0~127,既可以用char類型注意:C語言類型的長度完全由編譯器決定,char通常被定義成8位寬;int通常被定義成

16位或

32位寬(或更高),它取決于平臺C語言規(guī)定:long>=int>=short>=char.(這里的">="指類型的寬度大于等于)。2.1.3字符型11/16/202281第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式注意:C語言類型的長度完全由編譯器決定,char通常被定義2.1數(shù)據(jù)類型歷史和特點2.3運算符和表達式第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)2.2變量和常量11/16/202282第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.3運算符和表達式第2章基對于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。與數(shù)據(jù)類型結(jié)合起來分類,分為整型常量、整型變量、浮點常量、浮點變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。2.2變量和常量11/16/202283第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式對于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。變量名代表該變量的存儲單元及其存放的值,系統(tǒng)為不同類型的變量在內(nèi)存中開辟不同的存儲單元,以便存放相應(yīng)類型的值;不同類型的變量存放數(shù)據(jù)的方法也不相同。系統(tǒng)還根據(jù)變量的類型檢查該變量所進行的運算是否合法,例如只有整型變量和整數(shù)才能參與求余(%)運算。2.2.1變量11/16/202284第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式變量名代表該變量的存儲單元及其存放的值,系統(tǒng)為不同類型的變量2.2.1變量1.變量的定義和賦值C語言要求程序中使用的每個變量都必須先定義,然后才能使用。定義變量需要用變量定義語句進行,其形式為:類型變量名[=初值][,變量名[=初值],……];11/16/202285第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.1變量1.變量的定義和賦值11/9/202214第2.2.1變量2.變量中數(shù)據(jù)的存儲C語言中無符號整數(shù)的存儲相對簡單,存儲單元的每個二進制位存放的0或1均表示數(shù)。有符號整數(shù)則用補碼表示實型數(shù)據(jù)是按指數(shù)形式存儲的。用一個字節(jié)(8位二進制信息)存儲字符類型數(shù)據(jù)。注意:可以把字符型數(shù)據(jù)看成是整型數(shù)據(jù)。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。11/16/202286第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.1變量2.變量中數(shù)據(jù)的存儲11/9/202215第2.2.2常量常量可分為直接常量和符號常量,其中直接常量包括:整型常量、實型常量、字符型常量、字符串常量。11/16/202287第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量常量可分為直接常量和符號常量,其中直接常量包2.2.2常量1.整型常量整型常量有三種表示方法:(1)十進制整數(shù):如154、565、-6523。(2)八進制整數(shù):以0開頭的數(shù)是八進制數(shù)。(3)十六進制整數(shù):以0x開頭的數(shù)是十六進制數(shù)。在上述方法表示的整數(shù)后面附一個字母l或L作后綴,即可表示該數(shù)據(jù)的類型是長整型的。注意:長整型數(shù)據(jù)和普通整型數(shù)據(jù)的區(qū)別。

11/16/202288第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量1.整型常量11/9/202217第1章2.2.2常量2.實型常量在C語言中,把帶小數(shù)的數(shù)稱為實數(shù)或浮點數(shù)。實型常量只能用十進制形式表示,不能用八進制和十六進制形式表示。實型常量有兩種表示方法:小數(shù)形式:由數(shù)字和小數(shù)點組成,如3.1415926、-0.12、.4、3.等都是實數(shù)。(2)指數(shù)形式:如1.23e5或12.3E4都代表1.23x105。注意:字母e(或E)之前必須有數(shù)字,且e后面指數(shù)必須為整數(shù),如e3、2.1e3.2、e等都不是合法的指數(shù)形式。

11/16/202289第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量2.實型常量11/9/202218第1章2.2.2常量3.字符常量字符型常量是由一對單引號括起來的單個字符構(gòu)成,在C語言中,字符常量有以下特點:(1)字符常量只能用單引號括起來,不能用雙引號或其它括號。(2)字符常量只能是單個字符,不能是字符串。(3)字符可以是字符集中任意字符。一個字符型常量的值是該字符集中對應(yīng)的ASCII編碼值。顯然'5'和5是不同的。11/16/202290第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量3.字符常量11/9/202219第1章2.2.2常量表2-3轉(zhuǎn)義字符表字符形式功能\n換行,將光標從當前位置移到下一行開頭\t橫向跳格,光標跳到下一個水平制表位\b退格\r回車,將光標從當前位置移到本行開頭\f換頁,將光標從當前位置移到下一頁開頭\\反斜杠字符“\”\'單引號字符“'”\"雙引號字符“"”\ddd1到3位8進制數(shù)所代表的字符\xhh1到2位16進制數(shù)所代表的字符11/16/202291第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.2.2常量表2-3轉(zhuǎn)義字符表字符功4.字符串常量C語言中沒有專門的字符串類型的變量,但有字符串常量。字符串常量由一對雙引號括起來的字符序列組成,如“abc”、“a”等都是字符串常量。雙引號僅起定界符的作用。字符串常量與字符常量的區(qū)別:(1)字符常量由單引號括起來,字符串常量由雙引號括起來。(2)字符常量占一個字節(jié)的內(nèi)存空間。字符串常量在內(nèi)存中存儲時由系統(tǒng)自動在存儲的所有字符尾部添加串結(jié)束標記'\0',所以,字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符所占的字節(jié)數(shù)加1。2.2.2常量11/16/202292第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式4.字符串常量2.2.2常量11/9/202221第1章5.符號常量符號常量就是使用符號代表常量。C語言中允許用標識符定義一個常量,這種常量定義在C語言中被稱之為“宏定義”,其一般形式為:#define標識符常量其中#define是一條預(yù)處理命令,稱為宏定義命令,其功能是把該標識符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標識符的地方均代之以該常量值。習(xí)慣上,符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。2.2.2常量11/16/202293第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式5.符號常量2.2.2常量11/9/202222第1章2.1數(shù)據(jù)類型歷史和特點2.2變量和常量第2章基本數(shù)據(jù)類型、運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.5數(shù)據(jù)的輸入輸出2.6內(nèi)部函數(shù)2.3運算符和表達式11/16/202294第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.1數(shù)據(jù)類型歷史和特點2.2變量和常量第2章基本數(shù)2.3.1運算符1.基本的算術(shù)運算符C語言中基本的算術(shù)運算符共有5種:+(加),-(減),*(乘),/(除),%(取模,或稱求余運算符)C語言規(guī)定:(1)%運算符僅用于整型變量或整型常量的運算,a%b的結(jié)果為a除以b的余數(shù),余數(shù)的符號與被除數(shù)相同,如:7%3的結(jié)果為1;7%-3的結(jié)果為1;-7%3的結(jié)果為-1。(2)+、-、*、/運算符的兩個操作數(shù)既可以是整數(shù),也可以是實數(shù)。當兩個操作數(shù)均是整數(shù)時,結(jié)果仍是整數(shù);若參加運算的兩個操作數(shù)中有一個是實數(shù),則結(jié)果為double型,因為所有實數(shù)都按double型進行運算。(3)當對兩個整型的數(shù)據(jù)相除時結(jié)果為整數(shù)。11/16/202295第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符1.基本的算術(shù)運算符11/9/202222.3.1運算符2.自增、自減運算符

自增運算符++和自減運算符--是C語言中兩個較為獨特的單目運算符,具有右結(jié)合性。它們既可以放在操作數(shù)前,也可以放在操作數(shù)后,并且操作對象只能是變量,不能是常量或表達式。如5++,++(a+b)等都是錯誤的。自增自減運算符的作用是將操作對象的值增加1或減去1。如:i++,i--/*表示在使用i值之后將i的值加(減)1*/++i,--i/*表示在使用i值之前將i的值加(減)1*/11/16/202296第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符2.自增、自減運算符11/9/202222.3.1運算符3.賦值運算符C語言中,賦值被認為是一種運算,由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。其形式是:<變量><賦值運算符><表達式>賦值運算符為“=”,它的作用是將賦值運算符右邊表達式或常量的值賦給其左邊的變量。賦值表達式的值就是被賦值的變量的值。例如:a=6這個賦值表達式的值是6(變量a的值也是6)。賦值表達式的值也可以再賦給其它變量,如:a=(b=3+5),括號內(nèi)的b=3+5是一個賦值表達式,其值為8,所以a的值為8,整個表達式的值也為8。11/16/202297第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符3.賦值運算符11/9/202226第1章2.3.1運算符4.復(fù)合賦值運算符C語言允許在賦值運算符“=”之前加上其他運算符以構(gòu)成復(fù)合的賦值運算符。例如:a+=5; 等價于a=a+5;a*=b+5; 等價于a=a*(b+5);凡是雙目運算符,都可以和賦值運算符一起組合成復(fù)合的賦值運算符。在C語言中,可以使用的復(fù)合賦值運算符有:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=11/16/202298第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符4.復(fù)合賦值運算符11/9/202227第2.3.1運算符5.關(guān)系運算符關(guān)系運算實際上就是比較運算。比較兩個量的運算符就稱為關(guān)系運算符。在C語言中為我們提供了6種關(guān)系運算符:<小于<=小于或等于>大于>=大于或等于==等于!=不等于關(guān)系運算符都是雙目運算符,要求兩個操作數(shù)是同一種數(shù)據(jù)類型,其結(jié)果為邏輯值。即關(guān)系成立時,其值為真,按C語言的習(xí)慣,用非0值(一般用1)表示;關(guān)系不成立時,其值為假,用0表示。11/16/202299第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式2.3.1運算符5.關(guān)系運算符11/9/202228第1章6.邏輯運算符C語言中為我們提供了三種邏輯運算符,分別是:&&與運算||或運算!非運算其中,與運算符&&和或運算符||均為雙目運算符,非運算符!為單目運算符。例如:a&&b當a,b都為真時,結(jié)果為真a||b當a,b都為假時,結(jié)果為假!a當a為真時,結(jié)果為假;當a為假時,結(jié)果為真2.3.1運算符11/16/2022100第1章C語言程序設(shè)計基礎(chǔ)2章基本數(shù)據(jù)類型、運算符和表達式6.邏輯運算符2.3.1運算符11/9/202229第1章2.3.1運算符7.位運算位運算

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論