C語言程序設(shè)計_第1頁
C語言程序設(shè)計_第2頁
C語言程序設(shè)計_第3頁
C語言程序設(shè)計_第4頁
C語言程序設(shè)計_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章數(shù)據(jù)類型、運算符和表達式目錄數(shù)據(jù)類型、常量和變量的定義運算符的種類、優(yōu)先級和結(jié)合方向表達式的類型和求值簡單的C程序設(shè)計及基本輸入輸出2C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式C的數(shù)據(jù)類型(DataTypes)基本類型整型、字符型、浮點型(實型)、枚舉類型構(gòu)造類型數(shù)組類型、結(jié)構(gòu)體類型、共用體類型指針類型空類型3C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式數(shù)據(jù)類型、常量和變量C的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的由前述數(shù)據(jù)類型可以構(gòu)造出更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)C語言的數(shù)據(jù)有常量和變量之分常量和變量都分別屬于某一數(shù)據(jù)類型程序中用到的所有數(shù)據(jù)都必須指定類型本章僅介紹基本數(shù)據(jù)類型4C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式標識符(Identifier)標識符變量名、符號常量名、函數(shù)名、類型名…標識符命名規(guī)范由字母、數(shù)字、下劃線(Underscore,'_')組成第一個字符必須為字母或下劃線C語言標識符是大小寫敏感的標識符的名稱一般應(yīng)具有一定的含義不要與C語言關(guān)鍵字(Keywords)重復(fù)一般不要使用以下劃線開頭的標識符5C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式標識符示例正確的標識符student、num1、_SUM、_1_2_3MyName、myname、my_name錯誤的標識符room3-1 包含了其他字符(減號)2men 以數(shù)字開頭long 與關(guān)鍵字重復(fù)Mr.Wang 包含了其他字符(小數(shù)點)6C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式常量(Constants)常量程序運行過程中,其值不能被改變的量例如:12、-6.7、'a'…符號常量(SymbolicConstants)用一個標識符代表的常量相當于把標識符用一個常量簡單替換下來標識符是一個整體,不要試圖拆開來替換含義清楚,一改全改習(xí)慣上符號常量名用大寫字母7C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式常量示例#definePRICE30#defineNUM12intmain(){......total=NUM*PRICE;total2=84*PRICE2;printf("total=%d",total);......}不會被替換=>total=12*

30;常量符號常量8C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式變量(Variables)其值可以改變的量稱為變量變量有一個名字,即標識符變量在存儲器中占據(jù)一定的存儲單元變量占據(jù)存儲空間的大小由其類型決定程序使用變量名表示這個變量所占據(jù)的存儲單元里存儲的數(shù)據(jù)的值變量要“先定義,后使用”9C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式變量的存儲34a變量名存儲單元(地址)變量值10C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型(Integer)整型常量的表示方法整型變量整型數(shù)據(jù)在內(nèi)存中的存放形式整型變量的類型整型變量的定義整型數(shù)據(jù)的溢出整型常量的類型11C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型常量的表示方法十進制(Decimal)例如,123、-456、0八進制(Octal)以0開頭,不得含有8或9例如,0123、-0456錯例,0138、-0912十六進制(Hexadecimal)以0x或0X開頭,用a~f或A~F表示10~15例如,0x123、-0X45、0x3AB、-0xabc12C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型數(shù)據(jù)在內(nèi)存中的存放方式二進制形式舉例,inti=50;/*int類型占2字節(jié)*/補碼(Complement)正數(shù):與原碼一致,首位為0負數(shù):絕對值取反加一,首位為1零:各位全為00000000000110010高地址字節(jié)低地址字節(jié)13C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式補碼舉例舉例inti=-50;/*int類型占2字節(jié)*/00000000001100101111111111001101111111111100111050的原碼-50的補碼取反加一-50的反碼14C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型變量的分類按占用存儲空間的大小劃分基本整型 int短整型 short[int]長整型 long[int]按有無符號劃分有符號 [signed]無符號 unsigned上述兩種分類方式組合,可得到6種類型15C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整數(shù)的長度整數(shù)的類型與長度short:占2字節(jié)(16bit)long:占4字節(jié)(32bit)int:占2或4字節(jié)(16或32bit)2Bytes=short

≤int

long=4Bytes若需要確定的長度,可選用short或long舉例BC3.1: int長度為2Bytesgcc: int長度為4Bytes16C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式有符號數(shù)與無符號數(shù)有符號數(shù)二進制補碼表示,首位為符號位指定signed或缺省情況,即為有符號數(shù)無符號數(shù)沒有符號位,只能表示非負數(shù)無符號數(shù)類型必須指定為unsigned若把負數(shù)賦值給無符號數(shù),則把該負數(shù)的補碼當作無符號數(shù)進行處理17C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式有符號數(shù)與無符號數(shù)舉例intmain(){

inti;

unsignedj;i=j=-50;i=i/2;/*-25*/j=j/2;/*32743*/}1111111111001110-50的補碼i,j/211111111111001110111111111100111i/2-25的補碼j/232743的補碼/原碼18C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型數(shù)據(jù)的取值范圍類型長度(bit)取值范圍[signed]short[int]16-215~215-1unsignedshort[int]160~216-1[signed]int16or32-215(31)~215(31)-1unsigned[int]16or320~216(32)-1[signed]long[int]32-231~231-1unsignedlong[int]320~232-119C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型變量的定義(Definition)定義形式inta,b;unsignedc;longd;unsignedshorte;變量的定義一般放在一個函數(shù)開頭的聲明部分,關(guān)于變量定義的具體內(nèi)容在以后相關(guān)章節(jié)里詳細介紹20C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型變量的定義與使用舉例intmain(){inta; /*定義有符號基本整型變量a*/unsignedb; /*定義無符號基本整型變量b*/longc; /*定義有符號長整型變量c*/a=-23; /*a的值為-23*/b=45; /*b的值為45*/c=a+b; /*c的值為22*/}21C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型數(shù)據(jù)的溢出(Overflow)溢出數(shù)據(jù)超出了變量能夠存儲的范圍,造成數(shù)據(jù)丟失或數(shù)值改變等舉例intmain(){inta=32767;a++;/*32768?*/}01111111111111111000000000000000+132767的補碼-32768的補碼22C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型常量的類型常量的類型后綴(Suffix)l、L 表示常量是一個長整型u、U 表示常量是一個無符號整型數(shù)兩種后綴可以一起使用舉例123l 長整型常數(shù)123456U 無符號整型常數(shù)456789ul 無符號長整型常數(shù)789101Lu 無符號長整型常數(shù)10123C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式整型常量使用中的類型問題對整型變量賦值常量的值不要超過變量的取值范圍直接使用常量帶有l(wèi)、L、u、U等后綴的整型常量一般用于函數(shù)調(diào)用不帶有后綴的整型常量的類型,是根據(jù)其數(shù)值大小所處的范圍來確定的24C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式浮點型(FloatingPoint)浮點型常量的表示方法浮點型變量浮點型數(shù)據(jù)在內(nèi)存中的存放形式浮點型變量的類型浮點型數(shù)據(jù)的舍入誤差浮點型常數(shù)的類型25C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式浮點型常量的表示方法十進制小數(shù)形式由符號、數(shù)字和小數(shù)點(必須)組成整數(shù)和小數(shù)部分都可省略,但不能同時省略舉例,12.3、-.123、123.、0.、.0指數(shù)形式由整數(shù)(或小數(shù))、e(或E)、整數(shù)順序組成e或E之前必須有數(shù)字,之后必須是整數(shù)舉例,123.4e-5表示123.4×10-5錯例,e1、12e、1.2e3.4、.e5、e26C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式規(guī)范化指數(shù)形式規(guī)范化指數(shù)形式類似于“科學(xué)計數(shù)法”e或E之前的小數(shù)中,小數(shù)點前面有且僅有一個非零數(shù)字舉例,123.456規(guī)范化形式,1.23456e2、1.23456E+002非規(guī)范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-5…27C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式浮點型數(shù)據(jù)在內(nèi)存中的存放方式(1)二進制規(guī)范化指數(shù)形式小數(shù)部分長度與能表示的精度有關(guān)指數(shù)部分長度與能表示的數(shù)值范圍有關(guān)se(E+bias)f指數(shù)部分(階碼)小數(shù)部分(尾數(shù))符號1823單精度11152雙精度長度28C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式浮點型數(shù)據(jù)在內(nèi)存中的存放方式(2)條件數(shù)據(jù)e=255andf≠0NaNe=255andf=0(–1)s∞0<e<255(–1)s2e–127(1.f)e=0andf

≠0(–1)s2–126(0.f)e=0andf=0(–1)s0(以單精度為例)29C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式特殊的數(shù)無窮大(Infinition)Inf 舉例,1.0/0.0-Inf 舉例,-1.0/0.0NaN(NotaNumber)NaN 舉例,sqrt(-1)/*開平方*/30C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式浮點型變量的類型分類單精度float雙精度double長雙精度longdouble長度和取值范圍類型長度(bit)有效數(shù)字絕對值范圍float326~710-37~1038double6415~1610-307~10308longdouble12818~1910-4931~10493231C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式浮點型數(shù)據(jù)的舍入誤差由于浮點型變量能夠表示的有效數(shù)字有限,將有效位以外的數(shù)字舍去造成誤差舉例floata=123456.789e5,b;b=a+20;/*b=12345678920?*/printf("a=%f\nb=%f\n",a,b);運行結(jié)果>a=12345678848.000000b=12345678848.00000032C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式浮點型常量的類型類型后綴f、F 表示常量是一個單精度型浮點數(shù)l、L 表示常量是一個長雙精度型浮點數(shù)無任何后綴的浮點型常量視作雙精度型對浮點型變量賦值一個浮點型常量可以賦值給任何類型的浮點型變量根據(jù)變量類型截取常量的相應(yīng)有效數(shù)字注意防止出現(xiàn)溢出33C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符型(Character)字符型常量字符型變量字符型數(shù)據(jù)在內(nèi)存中的存放形式字符型數(shù)據(jù)的使用方法字符串常量34C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符型常量單引號括起來的一個字符舉例,'a'、'A'、'1'、''、'?'…錯例,'abc'、''、'我'…轉(zhuǎn)義字符以'\'開頭的特殊字符'\ddd'1到3位8進制數(shù)ASCII碼代表的字符'\xhh'1到2位16進制數(shù)ASCII碼代表的字符舉例,'\n'、'\t'、'\\'、'\''、'\"'、'\123'、'\x3A'…35C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符型變量字符型變量只能存放一個字符定義與使用intmain(){charc1,c2;/*定義字符型變量c1和c2*/

c1='a';/*c1的值為'a'*/c2='2';/*c2的值為'2'*/}36C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符型數(shù)據(jù)在內(nèi)存中的存放形式一個字符型數(shù)據(jù)占一個字節(jié)的空間字符型數(shù)據(jù)以其ASCII碼形式存放字符型數(shù)據(jù)的存放形式與只占一個字節(jié)長度的整型數(shù)據(jù)完全相同01100001c1='a'(ASCII=97)00110010c2='2'(ASCII=50)37C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符型數(shù)據(jù)的使用方法可以把字符型數(shù)據(jù)視作一種長度為1字節(jié)的整型數(shù)據(jù)處理當使用字符型數(shù)據(jù)時,與使用這個字符的ASCII碼(一個8位整數(shù))是完全一樣的字符型數(shù)據(jù)的用法與整型數(shù)據(jù)完全一樣,包括運算、賦值、輸入、輸出等字符型數(shù)據(jù)使用過程中,同樣需要注意溢出、符號等問題結(jié)合實際問題分析數(shù)據(jù)表示字符還是整數(shù)38C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符型數(shù)據(jù)使用舉例intmain(){charc;inti,j;c=97; /*c='a'*/i=c+20;/*i=117*/j='2'; /*j=50*/printf("%c,%d\n",c,c);/*a,97*/}39C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符型變量的符號字符型變量與整型變量一樣,也分為有符號數(shù)與無符號數(shù)無符號字符unsignedcharc;舉例,表示一個班級的人數(shù)(<256)賦值和使用中需要注意的問題,與整型變量相同40C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符串(String)常量表示形式一對雙引號括起來的字符序列引號內(nèi)可以包括0個、1個或多個字符字符序列中的特殊字符用轉(zhuǎn)義字符表示舉例,"abc"、"a"、""、""、"我"舉例,"12.4"、"$#*!"、"C:\\HOME"字符常量和字符串常量是不同類型的數(shù)據(jù)例如,'a'與"a"是不同的不能把一個字符串賦值給一個字符型變量41C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符串在內(nèi)存中的存放方式在內(nèi)存中每個字符按順序存放字符串結(jié)尾有一個空字符(ASCII=0,'\0')作為字符串結(jié)束標志字符串結(jié)束標志'\0'是不能顯示的,在字符串常量中,也不用顯式寫出來舉例"TEST""""a"'T''E''S''T'\08469838400\0'a'\000970042C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式變量賦初值(Initialization)在定義變量的同時對變量賦值(初始化)舉例inta=1; /*相當于inta;a=1;*/inta,b=3; /*對b賦初值,a沒有初值*/intb,c,a=b=c=100; /*對三個變量賦同樣的初值*/變量使用前,一般應(yīng)先對它賦值43C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式各類數(shù)值型數(shù)據(jù)間的混合運算整型、字符型、浮點型數(shù)據(jù)可混合運算混合運算時,不同類型的數(shù)據(jù)按照一定的規(guī)則先轉(zhuǎn)換為同一類型,然后再運算doublelongunsignedintfloatchar,short高低44C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式運算符(Operator)運算符的種類運算符的優(yōu)先級運算符的結(jié)合方向45C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式運算符的種類(1)算術(shù)運算符 +-*/%++--關(guān)系運算符 ><==>=<=!=邏輯運算符 !&&||位運算符 <<>>~|^&賦值運算符 =+=-=*=/=%= >>=<<=&=^=|=條件運算符 ?:46C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式運算符的種類(2)逗號運算符 ,指針運算符 *&求字節(jié)數(shù)運算符 sizeof強制類型轉(zhuǎn)換運算符 (type)分量運算符 .->下標運算符 []其他運算符 ()47C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式運算符的優(yōu)先級(Precedence)優(yōu)先級運算符的運算次序按優(yōu)先級由高到低執(zhí)行可以用圓括號()改變運算符的執(zhí)行次序舉例a+b*c–d/e /*先算乘除,后算加減*/ /*乘除比加減優(yōu)先級高*/(a+b)*(c-d)/e /*先算加減,后算乘除*/48C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式運算符的結(jié)合方向(Associativity)結(jié)合方向當一個操作數(shù)兩側(cè)的運算符優(yōu)先級相同時,運算次序按照結(jié)合方向的規(guī)定進行舉例a+b-c

/*+和-的結(jié)合方向都是從左向右*/ /*b先與+結(jié)合計算a+b,然后執(zhí)行減法*/a=b=1

/*=的結(jié)合方向是從右向左,先計算b=1*/49C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式運算符的結(jié)合方向規(guī)則單目運算符的結(jié)合方向都是“從右向左”!、~、++、--、+(正號)、-(負號)*(指針運算符)、&(地址運算符)sizeof、(type)賦值運算符的結(jié)合方向是“從右向左”三目運算符的結(jié)合方向是“從右向左”唯一的三目運算符:條件運算符?:其他運算符的結(jié)合方向都是“從左向右”50C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式優(yōu)先級與結(jié)合方向總結(jié)不同優(yōu)先級的運算符,運算次序按優(yōu)先級由高到低執(zhí)行同一優(yōu)先級的運算符,運算次序按結(jié)合方向的規(guī)定執(zhí)行可以使用圓括號()明確運算次序圓括號()具有最高的優(yōu)先級51C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式表達式(Expression)表達式的概念表達式的類型表達式求值算術(shù)運算符和算術(shù)表達式賦值運算符和賦值表達式逗號運算符和逗號表達式52C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式表達式的概念表達式用運算符把操作數(shù)連接起來,并符合C語言語法規(guī)則的式子操作數(shù)包括常量、變量、函數(shù)調(diào)用、表達式廣義上,常量、變量、函數(shù)調(diào)用也可以看作屬于表達式的范疇舉例a+2.5*b-6/c+'z'-max(x,y)!((a<1e-6)&&(b==(c+sqrt(f))))53C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式表達式的類型表達式的類型表達式的值的類型取決于操作數(shù)的類型以及它們所做的運算舉例a+2.5*b-6/c+'z' /*混合類型算術(shù)運算,值為double類型*/!((a<1e-6)&&(b==(c+sqrt(f))))

/*邏輯判斷的結(jié)果是邏輯值*/

/*C語言用整型表示邏輯類型*/54C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式算術(shù)運算符(ArithmeticOperators)基本算術(shù)運算符+-*/%強制類型轉(zhuǎn)換運算符(類型名)自增、自減運算符++--55C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式基本算術(shù)運算符運算符名稱舉例說明+正值運算符(正號)+b值不變-負值運算符(負號)-d取相反數(shù)+加法運算符a+3加法-減法運算符c-4減法*乘法運算符a*3乘法/除法運算符c/d除法%模運算符e%4求余數(shù)、取模56C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式基本算術(shù)運算符的特性優(yōu)先級(從高到低)+

(正號)–

(負號)*/%

+

(加)–

(減)結(jié)合方向+

(正號)–

(負號):從右向左+

(加)–

(減)*/%:從左向右57C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式基本算術(shù)運算符的說明兩個整數(shù)相除,結(jié)果也為整數(shù)直接舍去商的小數(shù)部分,而不會“四舍五入”負數(shù)整數(shù)除法,結(jié)果的舍入方向沒有規(guī)定如果需要得到精確的運算結(jié)果,可以把其中一個操作數(shù)轉(zhuǎn)換為浮點數(shù)舉例,5/3(=1)、5.0/3(=1.66666…)舉例,-5/3(=-1?-2?)模運算符的兩個操作數(shù)都必須是整數(shù)負數(shù)模運算結(jié)果的符號沒有規(guī)定舉例,5%3(=2)、-5%3(=-2?1?)58C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式強制類型轉(zhuǎn)換運算符形式(類型名)操作數(shù)說明強制把表達式轉(zhuǎn)換成所需的類型強制類型轉(zhuǎn)換運算符的優(yōu)先級比較高強制類型轉(zhuǎn)換不會改變操作數(shù)自身的類型,只是得到一個所需類型的中間量多用于自動類型轉(zhuǎn)換不能實現(xiàn)的目的強制類型轉(zhuǎn)換后,會影響C語言做類型檢查59C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式強制類型轉(zhuǎn)換舉例floatx=2.8,y=3.7,z;inta,b,c,d=5,e=2;a=(int)x+y; /*a=5,2+3.7=>5*/b=(int)(x+y); /*b=6,(int)(6.5)*/c=(int)x;printf("x=%f,c=%d\n",x,c);

/*x=2.800000,c=2*/z=(float)d/e; /*z=2.5*/60C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式自增、自減運算符形式++i,--i i的值加/減1,表達式的值是i加/減1之后的值i++,i-- i的值加/減1,表達式的值是i加/減1之前的值說明注意區(qū)分:i是變量,++i是表達式++和--只能用于變量,不能用于常量和表達式++和--的結(jié)合方向是“自右向左”61C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式自增、自減運算符舉例inti=3,j,a,b=1,c=2;j=++i; /*i=i+1,j=i,i=4,j=4*/j=i++; /*j=i,i=i+1,i=5,j=4*/j=-i++; /*-(i++),i=6,j=-5*/j=i++*2; /*(i++)*2,i=7,j=12*/a=(b+c)++; /*非法!!!

*/a=34++; /*非法!!!

*/j=++i++; /*非法!!!

*/62C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式有關(guān)表達式使用的問題表達式中子表達式的求值順序沒有規(guī)定i=3;j=(i++)+(i++)+(i++);

/*j=9?12?*/C編譯程序自左向右盡可能多的將若干字符組合成一個運算符、標識符、關(guān)鍵字i+++j/*(i++)+j

而不是i+(++j)*/調(diào)用函數(shù)時,實參的求值順序沒有規(guī)定i=3;printf("%d,%d\n",i,i++);

/*3,3?4,3?*/63C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式賦值運算符(AssignmentOperators)賦值運算符=把右側(cè)表達式的值賦給左側(cè)的變量一般情況下,賦值運算符左側(cè)應(yīng)當是變量賦值運算符的優(yōu)先級較低,“自右向左”結(jié)合運算符兩側(cè)類型不一致時,要進行類型轉(zhuǎn)換注意“賦值”與“等于”的區(qū)別,例如i=i+2;復(fù)合賦值運算符=前加上算術(shù)運算符或位運算符,如+=、|=舉例,z*=x+y; /*z=z*(x+y);*/64C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式賦值表達式賦值表達式<變量><賦值運算符><表達式>賦值表達式的值就是所賦的值運算符右側(cè)的表達式可以是一個賦值表達式舉例a=5;/*表達式的值為5*/a=b=3;/*a=(b=3)*/a=b=c=1;/*a=(b=(c=1))*/a=(b=4)+(c=3);/*b=4,c=3,a=7*/65C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式逗號運算符逗號運算符,exp1,exp2逗號運算符的優(yōu)先級最低,“自左向右”結(jié)合逗號表達式的值是exp2的值exp1和exp2都可以又是“逗號表達式”把多個表達式組合成一個表達式使用舉例x=(a=3,6*a)/*a=3,x=18*/x=a=3,6*a/*a=3,x=3*/66C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式基本輸入輸出頭文件#include<stdio.h>輸入輸出函數(shù)字符輸出函數(shù) putchar字符輸入函數(shù) getchar格式輸出函數(shù) printf格式輸入函數(shù) scanf字符串輸出函數(shù) puts字符串輸入函數(shù) gets67C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符輸出函數(shù)putchar函數(shù)說明intputchar(intc);輸出一個字符到標準輸出設(shè)備參數(shù)說明intc要輸出的字符,可以是整數(shù)或字符,若超出字符型范圍,則只使用低字節(jié)返回值若成功,返回輸出字符的ASCII碼值若失敗,返回EOF

(EndofFile)68C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式函數(shù)putchar舉例(02-01.C)intc,i;putchar('a'); /*輸出'a'*/putchar('\n'); /*輸出換行符*/putchar(101); /*輸出'e'*/putchar('\101'); /*輸出'A'*/c=1000;i=putchar(c); /*輸出'è',i=232*/69C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式字符輸入函數(shù)getchar函數(shù)說明intgetchar(void);從標準輸入設(shè)備輸入一個字符需要輸入回車后,函數(shù)才返回參數(shù)說明無參數(shù)返回值若成功,返回輸入字符的ASCII碼值若失敗,返回EOF

(EndofFile)70C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式函數(shù)getchar舉例(02-02.C)intc;c=getchar(); /*輸入'a'后回車*/putchar(c); /*輸出'a'*/c=getchar(); /*是否需要輸入?

*/printf("c=%d\n",c); /*輸出c=?10*/c=getchar(); /*輸入'abcd'后回車*/putchar(c); /*輸出'a'*/putchar(getchar()); /*輸出'b'*/71C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式格式輸出函數(shù)printf函數(shù)說明intprintf(char*format[,args...]);格式化輸出若干任意類型數(shù)據(jù)參數(shù)說明char*format格式控制字符串a(chǎn)rgs需要輸出的數(shù)據(jù)列表,可以多個或沒有返回值若成功,返回輸出的字節(jié)數(shù),包括換行符若失敗,返回EOF

(EndofFile)72C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式函數(shù)printf的參數(shù)說明格式字符串包括“格式說明”和“普通字符”“格式說明”由%和“格式字符”組成,將輸出數(shù)據(jù)按指定格式輸出“普通字符”按原樣輸出輸出列表需要輸出的數(shù)據(jù)可以是變量、常量、表達式、函數(shù)調(diào)用等輸出數(shù)據(jù)按順序與“格式說明”對應(yīng)輸出73C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式函數(shù)printf的格式舉例printf("a=%db=%d",a,b);格式說明普通字符輸出列表輸出結(jié)果>a=3b=474C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式格式字符格式字符說

明d,i有符號十進制整數(shù),正數(shù)不輸出符號o無符號八進制整數(shù),不輸出前綴0x,X無符號十六進制整數(shù),不輸出前綴0x或0Xu無符號十進制整數(shù)c轉(zhuǎn)換為無符號字符型,以此為ASCII碼輸出一個字符s輸出字符串,直到遇到'\0'或達到指定寬度f小數(shù)形式單、雙精度數(shù),缺省精度為6位小數(shù)e,E以規(guī)范化指數(shù)形式輸出浮點數(shù),缺省精度為6位小數(shù)g,G以f(F)和e(E)兩種格式中較短的一種輸出%輸出一個%75C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式附加格式字符格式字符說

明h有符號或無符號短整型l有符號或無符號長整型L長雙精度型m一個正整數(shù),輸出數(shù)據(jù)的最小寬度.n一個正整數(shù),輸出數(shù)據(jù)的精度,浮點數(shù)的小數(shù)位數(shù)(f,e,E)或有效數(shù)字(g,G)或字符串的字符個數(shù)-輸出的數(shù)字或字符向左靠齊+輸出的數(shù)字一直帶符號,即正號也輸出0輸出的數(shù)字不滿規(guī)定寬度時,用前導(dǎo)0填充有符號數(shù)字如果沒有輸出符號,則前面加一個空格#八進制和十六進制數(shù)加前綴76C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和表達式函數(shù)printf舉例(02-03.C)inti=1234;floatf=-56.78;printf("i=%+6d",i); /*"i=+1234"*/printf("%c",i); /*"ò"*/printf("%#08x",i); /*"0x0004d2"*/printf("%10.5E",f); /*"-5.67800E+01"*/printf("%7.4f%%",f);/*"-56.7800%"*/printf("%+6.3G",f); /*"-56.8"*/printf("%-6.3s","Hello");/*"Hel"*/77C語言程序設(shè)計-第2章數(shù)據(jù)類型、運算符和

溫馨提示

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

最新文檔

評論

0/150

提交評論