




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
主講 劉少兵第二講數(shù)據(jù)、運(yùn)算與基本輸入輸出共72頁第2
頁第二章數(shù)據(jù)、運(yùn)算與基本輸入輸出基本數(shù)據(jù)類型與特點(diǎn)各種數(shù)據(jù)類型表示范圍常量的表示方法變量說明語句運(yùn)算符與基本運(yùn)算規(guī)則基本輸入輸出函數(shù)使用方法本章要點(diǎn)共72頁第3
頁第二章數(shù)據(jù)、運(yùn)算與基本輸入輸出第一節(jié)數(shù)據(jù)與數(shù)據(jù)類型第二節(jié)常量與常量定義第三節(jié)變量與變量說明第四節(jié)基本運(yùn)算第五節(jié)運(yùn)算符的優(yōu)先級與結(jié)合性第六節(jié)數(shù)據(jù)類型轉(zhuǎn)換第七節(jié)數(shù)據(jù)的輸入與輸出第八節(jié)綜合舉例共72頁第4
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型數(shù)據(jù)程序加工處理的對象及其結(jié)果數(shù)據(jù)類型數(shù)據(jù)在計(jì)算機(jī)內(nèi)部的存儲形式(占用的內(nèi)存單元數(shù)量、編碼方式、取值范圍等)常量在程序運(yùn)行過程中不允許改變的量變量在程序運(yùn)行過程中允許改變的量一、基本概念共72頁第5
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))二、C語言的數(shù)據(jù)類型基本類型字符型char整型int浮點(diǎn)型單精度float雙精度double指針類型構(gòu)造類型數(shù)組結(jié)構(gòu)struct聯(lián)合union枚舉enum無值類型第二章第五章第六章指針類型第四章共72頁第6
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))C語言基本數(shù)據(jù)類型有四種:字符型整型單精度浮點(diǎn)型雙精度浮點(diǎn)型charintfloatdouble類型說明符三、C語言的基本數(shù)據(jù)類型C語言有四種類型修飾符:短長有符號無符號shortlongsignedunsigned類型修飾符注意:類型修飾符不能單獨(dú)使用,必須與類型說明符配合在一起使用C語言采用類型說明符說明不同的數(shù)據(jù)類型共72頁第7
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))基本數(shù)據(jù)類型的數(shù)據(jù)存儲格式和取值范圍:類型占用內(nèi)存單元取值范圍數(shù)據(jù)存儲格式
char1(8位)0~255ASCII碼
shortint2(16位)-32768~32767二進(jìn)制補(bǔ)碼
float4(32位)±3.4*10-38~±3.4*10387位有效數(shù)字
double8(64位)±10-308~±10308 15位有效數(shù)字四、基本數(shù)據(jù)類型的數(shù)據(jù)表示與取值范圍無法表示全體實(shí)數(shù)保存字符對應(yīng)的ASCII碼-2151000,0000,0000,0000215-10111,1111,1111,1111float:尾數(shù)24位+階數(shù)8位double:尾數(shù)52位+階數(shù)12位
共72頁第8
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型-intshortint表示范圍:二進(jìn)制16bit(2Byte)000000000000000100000000000000110111111111111111=1=3short整數(shù)的最大值shortint型表示數(shù)的范圍:-32768~32767例2_2021111111111111111注意:使用中要防止數(shù)據(jù)溢出=-1short整數(shù)的最小值1000000000000000=215-1=32767=-215=-32768返回共72頁第9
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型-intmain(){shortinti;i=1;i=i*2;printf(”\ni=%d”,i);i=i*3;printf(”\ni=%d”,i);i=i*4;printf(”\ni=%d”,i);i=i*5;printf(”\ni=%d”,i);i=i*6;printf(”\ni=%d”,i);i=i*7;printf(”\ni=%d”,i);i=i*8;printf(”\ni=%d”,i);i=i*9;printf(”\ni=%d”,i);i=i*10;printf(”\ni=%d”,i);}
期望結(jié)果
i=2i=6i=24i=120i=720i=5040i=40320i=362880i=3628800
實(shí)際運(yùn)行結(jié)果
i=2i=6i=24i=120i=720i=5040i=-25216i=-30336i=24320產(chǎn)生數(shù)據(jù)溢出上溢下溢返回例C2_202共72頁第10
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型-float返回有效數(shù)字的意義?
二進(jìn)制7位
二進(jìn)制23位單精度實(shí)型尾數(shù)階碼2-23
<=
|尾數(shù)|
<=1-2-230.000,000,12<=|尾數(shù)|<=0.999,999,88例C2_203數(shù)的范圍的意義?2-128<=|階碼|<=21272.9*10-39<=|階碼|<=1.7*1038尾數(shù)的符號位階碼的符號位共72頁第11
頁§2-1數(shù)據(jù)與數(shù)據(jù)類型(續(xù))加修飾符數(shù)據(jù)類型的數(shù)據(jù)存儲格式和取值范圍:
shortint<==>int<==>short signed<==>int<==>shortint<==>short類型占用內(nèi)存單元取值范圍
unsignedint2字節(jié) 0~65535
longint 4字節(jié)-2147483648~2147483647
unsignedlong4字節(jié)0~4294967295-231231-1216-1232-1共72頁第12
頁§2-2常數(shù)與常數(shù)定義整型常量(3種形式) 10進(jìn)制
8進(jìn)制 16進(jìn)制實(shí)型常量(2種形式) 十進(jìn)制 指數(shù)
字符常量字符串常量一、常數(shù):0
~9整型常量實(shí)例:0
~7以數(shù)字0開頭:0
~9,A~F/a~f,以0x或0X開頭:符號、整數(shù)、小數(shù)點(diǎn)和小數(shù):用e或E和表示指數(shù)部分實(shí)型常量實(shí)例字符常量字符串常量共72頁第13
頁§2-2整型常數(shù)實(shí)例整型常量的不同表示方法:
10進(jìn)制:
100-80+123
8進(jìn)制:
010024010016進(jìn)制:
0x380x100X100XFF0xa整型常量的類型:
1.在整型表示范圍之內(nèi),根據(jù)值大小默認(rèn)類型2.在常量后面加l或L,則認(rèn)為它是longint型例如:都是longint型常量
10進(jìn)制:-123L0L432l8進(jìn)制:010L024L0100L16進(jìn)制:
0x38L0x1000L0XFFlx0a0000l返回共72頁第14
頁§2-2實(shí)型常數(shù)實(shí)例實(shí)型常量的不同表示方法:
10進(jìn)制:1.01.+12.0-12.00.0指數(shù):1e31.8e-3-123e-6
等價于:10001.8*10-3-123*10-6
指數(shù):-.1e-3.1E10
等價于:-0.1*10-30.1*10-10返回共72頁第15
頁§2-2常數(shù)與常數(shù)定義-字符常數(shù)字符型常量:用單引號括起來的單個字符實(shí)例:’A’
’g’
’#’
’0’
’2’
’+’
’,’
’;’
’(’
’)’字符定界符:單引號’字符型數(shù)據(jù)的存儲格式:ASCII碼(見書P207)65103354850返回如何表示不可顯示字符?回車/退格/TAB?如何表示定界符?’’’
產(chǎn)生歧異轉(zhuǎn)義符\:將\后面的字符轉(zhuǎn)換為其它含義共72頁第16
頁§2-2常數(shù)與常數(shù)定義-轉(zhuǎn)義符常數(shù)字符形式功能使用舉例
\0字符串結(jié)束標(biāo)志
\n換行(ASCII碼為10) printf(”\n”);
\t橫向跳格 printf(”\t”);
\b退格
\r回車(ASCII碼為13)
\f走紙換頁
\\字符\(ASCII碼為92)’\\’
表示字符
\
\’
單引號 ’\’’表示字符’
\”雙引號 ’\”’表示字符”
\ddd用8進(jìn)制表示字符 ’a’=’\141’
’A’=’\101’
換行符’\12’
\xhh用16進(jìn)制表示字符’a’=’\x61’
’A’=’\x41’
換行符’\xa’返回共72頁第17
頁§2-2常數(shù)與常數(shù)定義-字符串常數(shù)字符串常量:用雙引號括起來的字符序列實(shí)例:”ThisisCstring.”
”a”
”
”
(1個空格)
””
(不含空格)
串定界符:雙引號
”字符串長度:字符串中包含的字符數(shù)量。返回串長=17串長=1串長=1串長=0"\t\"Name\\Address\n"串長=15空串實(shí)例:"\"Cisveryeasy.\""串長=17注意:字符串"a"
與字符’a’
的區(qū)別"Hesaid\"ok.\"\n"串長=13共72頁第18
頁§2-2常數(shù)與常數(shù)定義常量定義形式#define
標(biāo)識符
常量用定義的一個標(biāo)識符來代表一個常量,稱為符號常量
# 宏命令專用定義符號
define
命令
標(biāo)識符
宏替換名(一般采用大寫字符)二、常數(shù)定義與符號常量常量定義實(shí)例注意:符號常量與變量不同,它的值在程序運(yùn)行過程中不能改變,也不能重新賦值。共72頁第19
頁§2-2常量定義實(shí)例常量定義實(shí)例#defineONE1
#define
PAI
3.1415926
#define
TV
”television”
#define
MAX
10#defineTWO
ONE+ONE使用方法
a=8+2;printf(”%s”,”television”);
s=3.14159*r*r;
intarray[10];返回a=b+TWO;printf(”%s”,TV);s=PAI*r*r;intarray[MAX];共72頁第20
頁§2-3
變量與變量說明變量:在程序運(yùn)行過程中允許改變的量變量的說明格式:[類型修飾符]類型說明符變量列表;例如:inti;
charch,str;
longk=1,m=0x12345678;doublex,y=1;變量說明意味著確定了:該變量占用內(nèi)存單元的數(shù)量,數(shù)據(jù)在內(nèi)存的表示方式,數(shù)據(jù)的取值范圍。一、變量說明的基本概念共72頁第21
頁§2-3變量與變量說明變量的三個屬性:
–變量名稱:編程時使用(進(jìn)行編程) –變量的值:程序運(yùn)行時使用(進(jìn)行運(yùn)算)
–變量地址:程序運(yùn)行時,要將變量的值保存在計(jì)算機(jī)的存儲單元中,每個存儲單元都有唯一的內(nèi)存地址。變量在內(nèi)存中占據(jù)的存儲單元的地址就是變量的地址。指針:變量的地址一般變量:存儲變量的值指針變量:保存變量地址的變量二、指針與指針變量共72頁第22
頁§2-3變量與變量說明指針變量說明:數(shù)據(jù)類型
*變量名; 例:有變量說明語句:char
c='A';
若變量c在內(nèi)存中對應(yīng)的地址為1000; *變量名稱:c,類型為char,占用1個字節(jié) *變量c的值:字母’A’
*變量c的地址:1000 若有:char
*
pc; 則稱指針變量pc是char型指針
pc=&c;/*&取c的地址*/ 則稱指針變量pc指向變量c共72頁第23
頁§2-3變量與變量說明變量在說明之后,沒有固定的初始值,要先賦值(給定一個初始值),后使用。變量賦初值將變量說明與賦初值合一,在說明變量時同時完成。實(shí)例
charcc='a',dd='\n'; int x=10,y=-10,z; doubletry=28.5,w=1e10;三、變量賦初值共72頁第24
頁§2-4運(yùn)算符一、運(yùn)算符簡介按運(yùn)算類型分類1.算術(shù)運(yùn)算符 2.關(guān)系運(yùn)算符3.邏輯運(yùn)算符4.
位運(yùn)算符5.賦值與賦值組合運(yùn)算符6.自增自減運(yùn)算符7.條件運(yùn)算
8.指針運(yùn)算9.
其它運(yùn)算符按運(yùn)算對象的數(shù)目分類◆單目運(yùn)算◆雙目運(yùn)算◆三目運(yùn)算目:進(jìn)行運(yùn)算時需要的操作數(shù)的數(shù)量共72頁第25
頁§2-4運(yùn)算符-算術(shù)運(yùn)算一、算術(shù)運(yùn)算符運(yùn)算符(雙目運(yùn)算符/單目運(yùn)算符)+加法運(yùn)算12
正值運(yùn)算14-減法運(yùn)算12
負(fù)值運(yùn)算14*乘法運(yùn)算13/除法運(yùn)算13%求余運(yùn)算13優(yōu)先級:*/%同級(高),+
-同級(低)結(jié)合性:相同優(yōu)先級運(yùn)算符進(jìn)行運(yùn)算時的次序
自左向右(標(biāo)記為
→)共72頁第26
頁§2-4運(yùn)算符-算術(shù)運(yùn)算實(shí)例1.參加運(yùn)算的對象都是int型,結(jié)果截取為int型10/3 11/310.0/3 11/3.1/2 1./210/5*3 10/(5*3)2.求余運(yùn)算的對象必須是整型9%3 1%310%3 10%-3-10%3 -10%-3=3=3=3.3333=3.66667=0=0.5=6=0=0=1=1=1=-1=-1共72頁第27
頁§2-4運(yùn)算符-關(guān)系運(yùn)算二、關(guān)系運(yùn)算符運(yùn)算符(雙目運(yùn)算符
→
)>大于10>=大于等于10<小于10<=小于等于10
==
等于 9!=不等于 9優(yōu)先級:>>=<<=同級(高),!===同級(低)關(guān)系運(yùn)算的結(jié)果應(yīng)該為邏輯型“真”或“假”
C語言中沒有邏輯型,將邏輯型數(shù)值化處理,用整型1表示“真”,用整型0表示“假”。共72頁第28
頁§2-4運(yùn)算符-關(guān)系運(yùn)算實(shí)例實(shí)例邏輯表達(dá)式
7>5的值是
1,5>7的值是
0。已知:inta=13,b=2,c=1;a>b a<=b a!=b a==b (a>b)==ca>b==ca-b==c 成立,結(jié)果為1不成立,結(jié)果為
0成立,結(jié)果為1不成立,結(jié)果為0結(jié)果為1與上面等價,結(jié)果為1等價于(a-b)==1,結(jié)果為0?
如何判斷數(shù)學(xué)中的邏輯關(guān)系:0≤a≤9?
0<=a<=9等價于(0<=a)<=9結(jié)果恒為1共72頁第29
頁§2-4運(yùn)算符-邏輯運(yùn)算三、邏輯運(yùn)算符運(yùn)算符
&&邏輯與(雙目)5(→)
||邏輯或(雙目)4(→)!邏輯非(單目)14(←)邏輯運(yùn)算關(guān)系邏輯運(yùn)算真值表ab!a!ba&&ba||b11
0
01110
010101
10
0100
110
0共72頁第30
頁§2-4運(yùn)算符-邏輯運(yùn)算式2
(y||
b)&&(y
||
a
)
1結(jié)果2結(jié)果例:要判斷0≤x≤9是否成立:(
0<=x
)&&(
x<=9
)
如果沒有括號:0
<=
x
&&
x
<=
9
等價
結(jié)果
結(jié)果
實(shí)例:比較下列兩個邏輯表達(dá)式的執(zhí)行過程式1
y||
b&&y||
a共72頁第31
頁§2-4運(yùn)算符-位運(yùn)算四、位運(yùn)算符運(yùn)算符
>> 按位右移(雙目)11(→)
<< 按位左移(雙目)11(→)
& 按位與(雙目)
8(→)
∧ 按位異或(雙目)7(→)
|
按位或(雙目)
6(→)~~ 按位反(單目)
14(←)真值表aba∧b~a~b000110 11101010111000共72頁第32
頁實(shí)例:已知:intx=7,y=10,z=1;設(shè)字長為8位
x&y= x&z=x
|y=y|
z=
x^y=
~
x=
–x=x<<2=y>>2=x>>2=
2(00000111
&00001010=0010) 1(00000111
&00000001=0001)15(00000111
|00001010=1111)11(00001010
|
00000001=1011)
13(00000111
^00001010=1101)
–8(
~
0000
0111)=1111
1000–728(00000111
<<2=0001
1100)2(00001010>>2=00000010)1(00000111
>>2=00000001)§2-4運(yùn)算符-位運(yùn)算共72頁第33
頁說明關(guān)于>>:右移一位=縮小1/2關(guān)于<<:左移一位=擴(kuò)大2倍關(guān)于~: 因?yàn)椋?~
x=按位求反=求反運(yùn)算 求負(fù)=求補(bǔ)=求反+1所以: 求反=求負(fù)–1
~x=-x-1
~7=–8~(–8)=7注意:1.位運(yùn)算是對二進(jìn)制的位進(jìn)行運(yùn)算2.只能對int型、char型和long型進(jìn)行位運(yùn)算§2-4運(yùn)算符-位運(yùn)算共72頁第34
頁§2-4運(yùn)算符-自增自減運(yùn)算五、自增自減運(yùn)算符運(yùn)算符(單目←)
++
自增 14
–– 自減 14++和––為單目運(yùn)算,只能作用于變量只能對int、char、long和指針變量進(jìn)行運(yùn)算功能:
++x <==>x=x+1
––x <==>x=x–1 (前綴)
x++ <==>x=x+1 x––
<==>x=x–1 (后綴)共72頁第35
頁§2-4運(yùn)算符-自增自減運(yùn)算自增(自減)有前綴和后綴之分。前綴形式:先自增(自減)再引用后綴形式:先引用再自增(自減)前綴與后綴的區(qū)別:
y=++x;<==>x=x+1;
y=x;
x先加1再賦值
y=x++;<==>y=x;
x=x+1;
x先賦值再加1共72頁第36
頁§2-4運(yùn)算符-自增自減運(yùn)算實(shí)例實(shí)例(1)
++i;i++;
因?yàn)樵诒磉_(dá)式中沒有其它運(yùn)算,結(jié)果一樣。(2)
x=1;y=++x;
結(jié)果:x=2,y=2
y=++x;<==>x=x+1;y=x;
在做賦值運(yùn)算之前,x先加1,然后將x賦給y(3)x=1;y=x++;
結(jié)果:x=2,y=1y=x++;<==>y=x;x=x+1;先將x
賦值給y,然后x
再加1共72頁第37
頁
x=3,z=3
x=3,y=6,z=3*6=18
x=3,y=6,z=2*6=12
x=3,y=6,z=3*5=15
x=3,y=6,z=2*5=10
x=4,z=4*4=16注意,以下操作是錯誤的:
x=++(i+j)+1;j=++
(5+x);y=++x*++x;§2-4運(yùn)算符-自增自減運(yùn)算實(shí)例實(shí)例已知:intx
=
2,y
=
5,z;
z=++x;
z=++x
*
++y;
z=x++
*
++y;z=++x
*
y++;
z=x++
*
y++;z=++x
*
++x;邏輯雖然正確,但實(shí)際編程中容易產(chǎn)生誤解,應(yīng)當(dāng)避免共72頁第38
頁§2-4運(yùn)算符-自增自減運(yùn)算實(shí)例實(shí)例已知:inti=1,j=2,k;k=i+++j;C語言處理運(yùn)算符(標(biāo)識符)時,遵循自左向右組合的原則,兩個‘+’號是一個運(yùn)算符,故處理成(i++)+j。k=i+++++j;不能編譯通過。原因是編譯器將前兩個‘+’處理成自增,接下來又將兩個‘+’號處理為自增,故不合語法。編程者可用空格或括號來表示正確的含義:k=i+++++j;
注意:一般不要用這樣的語句。共72頁第39
頁§2-4運(yùn)算符-賦值與賦值組合運(yùn)算六、賦值與賦值組合運(yùn)算符運(yùn)算符(雙目←)
賦值運(yùn)算: =2 賦值組合運(yùn)算:e1
op=e22
等于于:e1=e1
op(e2) 其中:op為下列10個運(yùn)算符之一+–*/%<<>>|&^
e1為可以進(jìn)行賦制操作的變量
e2為合法的表達(dá)式例:x+=2; <==>x=x+2; x*=y+1; <==>x=x*(y+1);
不等價
x=x*y+1; x>>=2; <==>x=x>>2;共72頁第40
頁§2-4運(yùn)算符-條件運(yùn)算七、條件運(yùn)算符運(yùn)算符(三目←)e1
?
e2
:
e3功能:如果表達(dá)式e1成立(e1值為非0),則執(zhí)行表達(dá)式e2;否則(表達(dá)式e1不成立),執(zhí)行表達(dá)式e3例:max=(a>b)?a:b; 求變量a與b的最大值
min=(a<b)?a:b;求變量a與b的最小值判斷e1
?執(zhí)行e2執(zhí)行e3成立不成立共72頁第41
頁§2-4運(yùn)算符-指針運(yùn)算八、指針運(yùn)算符運(yùn)算符(單目
←)
&取變量的地址 14
*
取指針變量(所指向)的內(nèi)容 14注意:運(yùn)算符&和“位與”運(yùn)算是同一符號;運(yùn)算符*和“乘”運(yùn)算是同一符號。只能從程序的上下文來區(qū)分運(yùn)算符&和運(yùn)算符*
的實(shí)際意義。共72頁第42
頁§2-4運(yùn)算符-指針運(yùn)算實(shí)例實(shí)例:已知:intx=2,y,*px;x為一般變量,px為指針型變量
y=x*100;
*px=y*10;
++x;
x++;px
px=&x; 取變量x的地址賦值給指針px
又稱為讓px指向變量x
x=10;若px已經(jīng)指向x,則可以用*px代替變量xx210<==>
*px=10;也稱為間接訪問<==>y=*px;取指針px的內(nèi)容<==>
y=*px
*100;<==>x=y*10;<==>++
*
px<==>(*
px)++;
括號不能省略
y=x; 共72頁第43
頁§2-4運(yùn)算符-其它運(yùn)算九、其它運(yùn)算符運(yùn)算符
. 取結(jié)構(gòu)/聯(lián)合的成員 15
–>通過指針取結(jié)構(gòu)/聯(lián)合的成員 15
() 改變表達(dá)式中的優(yōu)先級關(guān)系 15
[] 數(shù)組下標(biāo) 15
, 逗號,表達(dá)式從左向右順序計(jì)算
1
(type)
e將e的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為type
14
sizeof(opr) 求opr所占用的內(nèi)存的字節(jié)數(shù) 14第六章第五章共72頁第44
頁§2-4運(yùn)算符-其它運(yùn)算實(shí)例實(shí)例:已知:intx,y,z;
y=(x=10,x+1);
答案:先執(zhí)行x=10,然后再執(zhí)行y=x+1
y=11,x=10
z=sizeof(int);
答案:z=2求int型數(shù)據(jù)占用的內(nèi)存字節(jié)數(shù)量
z=sizeof(x);
答案:z=2求變量x占用的內(nèi)存字節(jié)數(shù)量共72頁第45
頁§2-5運(yùn)算符的優(yōu)先級與結(jié)合性按運(yùn)算符的優(yōu)先級分為15級按運(yùn)算符的結(jié)合性分為2種
自左向右結(jié)合自右向左結(jié)合優(yōu)先級不同時:運(yùn)算符優(yōu)先級的高低決定了進(jìn)行運(yùn)算的先后次序。優(yōu)先級相同時:同優(yōu)先級運(yùn)算符的運(yùn)算次序由結(jié)合性決定。例如:四則運(yùn)算中的“先乘除,后加減”反映了運(yùn)算符的優(yōu)先級;“同級運(yùn)算從左至右”反映了乘/除運(yùn)算(加/減運(yùn)算)的結(jié)合性。共72頁第46
頁§2-5運(yùn)算符的優(yōu)先級與結(jié)合性運(yùn)算符優(yōu)先級表共72頁第47
頁§2-5實(shí)例已知:inta=8,b=5,c=2;計(jì)算下列表達(dá)式結(jié)果①a/b*b②a%b*c③a*c>>2④a&c&&b⑤a|b&c⑥~(~a>>3)⑦b>~a
?a*c
:
a%c5 先/后*6 先%后*4 先
*后>>0 先&后&&8 先&后|~后>>~00001000=11110111>>3=11111110~=0000000116 先~
再>再?:共72頁第48
頁#definePRINT(x)printf("%d\n",x)main(){intx=3,y=2,z=1;x=y++>=x&&x-y==++z;
PRINT(x);PRINT(y);PRINT(z);y*=z=x+(z+2);PRINT(x);PRINT(y);PRINT(z);x=y=z=1;PRINT(--x&&++y||z++);
PRINT(x);PRINT(y);PRINT(z);x=9;y=6;z=5;x=((x+y)%z>=x%z+y%z)?1:0;
PRINT(x); }
/*先算y>=x結(jié)果為0,則不再算&&之后的表達(dá)式x-y==++z。將結(jié)果賦給x,最后執(zhí)行y+1*/
/*x=0,y=3,z=1*//*先算x+(z+2),3賦給z,再執(zhí)行y*=z*//*x=0,y=9,z=3*//*x先減1結(jié)果為0,則跳過&&++y不執(zhí)行,與z進(jìn)行邏輯或運(yùn)算,再執(zhí)行z++,輸出結(jié)果:1*/
/*x=0,y=1,z=2*//*┃①┃┃┃③┃┃④┃━┳━*//*┗┳┛②┃┗┳┛⑤┗┳┛┃*//*┗━┳━┛⑥┗━┳━┛┃*//*┗━━━┳━━━┛⑦┃*//*┗━━━━━━━━━┛*/
/*x=0*/例C2_4003共72頁第49
頁#include<stdio.h>main(){intx,y,z;x=1;y=1;z=0;x=x&&y||z;printf("x=%d\n",x);printf("%d\n",x||
!y++&&++z);printf("y=%d,z=%d\n",y,z);x=y=1;z=x++-1;printf("x=%d,z=%d\n",x,z);z+=-x+++++y;printf("x=%d,y=%d,z=%d\n",x,y,z);}&&優(yōu)先級高,先計(jì)算x&&y,結(jié)果為1由于是||運(yùn)算,故不再計(jì)算1||z。x=1||優(yōu)先級最低,x=1,不再計(jì)算||右邊的算式,y和z不變y=1,z=0
++為后綴,先將x-1的值賦給z,再計(jì)算x++
x=2,z=0等價于z+=(-(x++))+(++y)
x=3,z=0,y=2實(shí)例例C2_4002共72頁第50
頁§2-6數(shù)據(jù)類型轉(zhuǎn)換不同數(shù)據(jù)類型的數(shù)據(jù)/變量進(jìn)行混合運(yùn)算時,需要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換轉(zhuǎn)換方式有兩種:“顯式的”類型轉(zhuǎn)換“隱式的”類型轉(zhuǎn)換“顯式的”類型轉(zhuǎn)換采用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(type)“隱式的”類型轉(zhuǎn)換是C語言按照一定的類型轉(zhuǎn)換規(guī)則自動進(jìn)行的轉(zhuǎn)換共72頁第51
頁§2-6數(shù)據(jù)類型轉(zhuǎn)換“隱式的”類型轉(zhuǎn)換規(guī)則1、運(yùn)算中將所有char型數(shù)據(jù)都轉(zhuǎn)換成int型,float型轉(zhuǎn)換成double型。2、低級類型服從高級類型,并進(jìn)行相應(yīng)的轉(zhuǎn)換double
floatlongunsignedint
char3、賦值運(yùn)算以賦值運(yùn)算符左邊變量的類型為準(zhǔn),即賦值運(yùn)算符右端值的類型向左邊變量的類型看齊,并進(jìn)行相應(yīng)的轉(zhuǎn)換。共72頁第52
頁§2-6數(shù)據(jù)類型轉(zhuǎn)換-實(shí)例例:inta,j,y;floatb;longd;doublec;則:y=j+'a'+a*b-c/d;其運(yùn)算次序和隱含的類型轉(zhuǎn)換為:①計(jì)算a*b,運(yùn)算結(jié)果為double型。②再計(jì)算c/d,結(jié)果為double型。③計(jì)算j+'a',結(jié)果為整型。④將第1步和第3步的結(jié)果相加,結(jié)果為double型⑤用第4步結(jié)果減第2步結(jié)果,結(jié)果為double型⑥給y賦值,先將第5步的結(jié)果double型轉(zhuǎn)換為整型(因?yàn)橘x值運(yùn)算左邊變量y為整型),截掉double型數(shù)據(jù)的小數(shù)部分,壓縮成int型。共72頁第53
頁§2-7數(shù)據(jù)的輸入與輸出輸入是指用戶借助計(jì)算機(jī)的輸入設(shè)備將數(shù)據(jù)輸入到計(jì)算機(jī)中。常見的輸入設(shè)備是鍵盤、鼠標(biāo)輸出是指從計(jì)算機(jī)內(nèi)部將數(shù)據(jù)輸送到用戶指定的外部輸出設(shè)備常見的輸出設(shè)備如顯示器、打印機(jī)、繪圖儀等C語言通過標(biāo)準(zhǔn)輸入/輸出庫(I/O庫)提供的函數(shù)完成輸入/輸出功能共72頁第54
頁§2-7字符輸入函數(shù)getchar調(diào)用形式:
c=getchar()功能:從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上取一個字符作為函數(shù)值返回。例:#include"stdio.h"main(){charc;c=getchar();
putchar(c);/*輸出字符變量c的值*/}運(yùn)行程序,如果從鍵盤輸入: a[ENTER] 則輸出為: a 如果從鍵盤輸入: abc[ENTER] 則輸出也為: a共72頁第55
頁§2-7格式輸入函數(shù)scanf調(diào)用形式:scanf(”控制字符串”,參數(shù)1,參數(shù)2,…,參數(shù)n) 其中:控制字符串也稱為格式說明串,它用于描述變量的輸入方式,格式說明的形式是:%附加格式說明符
格式轉(zhuǎn)換字符 附加格式說明符部分可以缺省。功能:從標(biāo)準(zhǔn)輸入設(shè)備上讀取輸入數(shù)據(jù),按格式說明的描述將讀入的數(shù)據(jù)賦于相應(yīng)的參數(shù)。 參數(shù)部分的每個參數(shù),若為一般變量,要在變量名前加“&”(取地址運(yùn)算符),表示將輸入的數(shù)據(jù)存入變量對應(yīng)的內(nèi)存單元(地址)中。scanf
(
”%d”,&x);共72頁第56
頁§2-7格式輸入函數(shù)scanf格式轉(zhuǎn)換字符說明
d輸入十進(jìn)制整數(shù)
o輸入八進(jìn)制整數(shù)
x輸入十六進(jìn)制整數(shù)
c輸入單個字符
s輸入字符串
f輸入實(shí)數(shù),可為小數(shù)形式或指數(shù)形式附加格式說明符說明
l用于輸入長整型數(shù)據(jù)及double型數(shù)據(jù)
h用于短整型數(shù)據(jù)正整數(shù)用于指定輸入數(shù)據(jù)占據(jù)的寬度*表示本輸入項(xiàng)在讀入后舍棄共72頁第57
頁§2-7格式輸入函數(shù)scanf1:scanf("%3d%2d",&x,&y); 輸入序列:123456[ENTER]
結(jié)果:x=123,y=452:scanf("%d,%d:%f",&x,&y,&z);
輸入序列:1,2:3.5[ENTER]
結(jié)果:x=1,y=2,z=3.53:scanf("%d%d%d",&x,&y,&z);
輸入序列一:123[ENTER]
結(jié)果:x=1,y=2,z=3 輸入序列二:1[TAB]23[ENTER] 輸入序列三:1[ENTER]
23[ENTER] 結(jié)果與輸入序列一的結(jié)果一樣。共72頁第58
頁§2-7格式輸入函數(shù)scanf4:scanf("%2d
%*2d,%2d",&x,&y);
輸入序列:1234,56[ENTER]
結(jié)果:x=12,y=56。注意:在scanf中,可以使用[ENTER]、空格或[TAB]作為數(shù)據(jù)之間的分隔符。5:scanf(”x=%d",&x);
要使x的值等于12,從鍵盤應(yīng)怎樣輸入?
正確的輸入序列:x=12[ENTER]
注意:字符x=被過濾掉了
若輸入序列為:12[ENTER]錯誤!共72頁第59
頁§2-7字符輸出函數(shù)putchar調(diào)用形式:
putchar(c)功能:通過標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出變量c。例C2_7301.C:將從鍵盤輸入的一行字符復(fù)制到標(biāo)準(zhǔn)輸出。#include"stdio.h"main(){charc;c=getchar();
while(c!=’\n’)
{
putchar(c); /*輸出該字符*/
c=getchar();/*再取下一輸入字符*/
}
}例C2_7301共72頁第60
頁§2-7格式輸出函數(shù)printf調(diào)用形式:printf(”控制字符串”,參數(shù)1,參數(shù)2,…,參數(shù)n)
其中:控制字符串也稱為格式說明串,它用于描述變量的輸出方式,格式說明的形式是:%附加格式說明符
格式轉(zhuǎn)換字符 附加格式說明符部分可以缺省。功能:按照控制字符串中的格式說明依次將后面的各參數(shù)進(jìn)行轉(zhuǎn)換,排放成格式說明中規(guī)定的格式,輸出到輸出設(shè)備上。對非格式說明符,則按原樣輸出。共72頁第61
頁§2-7格式輸出函數(shù)printf格式轉(zhuǎn)換字符說明
d以十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號)
o以八進(jìn)制無符號形式輸出整數(shù)(不輸出前綴符)
x以十六進(jìn)制無符號形式輸出整數(shù)(不輸出前綴符)
u以無符號十進(jìn)制形式輸出整數(shù)
c以字符形式輸出,僅輸出一個字符
s輸出字符串
f以小數(shù)形式輸出單、雙精度數(shù)
e以標(biāo)準(zhǔn)指數(shù)形式輸出單、雙精度數(shù)
g選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0共72頁第62
頁§2-7格式輸出函數(shù)printf附加說明符說明
l用于輸出長整型數(shù)據(jù),可加在格式轉(zhuǎn)換符d,o,x,u前面
m(正整數(shù))輸出數(shù)據(jù)的最小域?qū)?n(正整數(shù))對實(shí)數(shù),表示輸出n位小數(shù);對字符串,表示截取的字符個數(shù)-輸出的數(shù)據(jù)在輸出域內(nèi)向左對齊共72頁第63
頁§2-7格式輸出函數(shù)printf實(shí)例1:#include<stdio.h>main(){printf("ThisisaCprogram.\n");}實(shí)例2:#include<stdio.h>main(){inta=1,b=2,c=100;printf("a=%d,b=%3d,d=%3d%%\n",a,b,a*c/b);
printf("%d,%o,%x\n",-a,-a,-a);}答案:a=1,b=
2,d=
50%-1,177777,
ffff例C2_7302例C2_7303共72頁第64
頁§2-7格式輸出函數(shù)printf實(shí)例3:#include<stdio.h>main(){charc='a';charch[]="Good-bye.";pri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程建筑外架合同
- 工程施工合同索賠條款
- 勞動合同與勞動保護(hù)
- 工程勞務(wù)合同協(xié)議書
- 學(xué)校食堂豬肉供貨合同
- 影視劇拍攝場地租賃合同
- 房屋合同尾款協(xié)議
- 棋牌室裝修工程協(xié)議合同
- 收養(yǎng)協(xié)議是合同
- 客戶樣板合同協(xié)議
- 高中主題班會 奮力拼搏圓夢高考課件-高三下學(xué)期沖刺高考主題班會
- 2025-2030全球及中國汽車制動卡鉗行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 武漢市部分學(xué)校2025屆高三第四次月考(數(shù)學(xué)試題)試題
- 化學(xué)中考試題及答案寧夏
- 【2025 中考模擬】3月石家莊十八縣初三摸底考試物理試卷(含答案)
- 《寓言故事中的對比》群文閱讀(教學(xué)設(shè)計(jì))-2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 2024年中國資源循環(huán)集團(tuán)有限公司招聘筆試真題
- 2025屆3月高三山東濰坊一模英語試題
- 2025年江西省南昌市南昌縣城區(qū)學(xué)校中考一模英語試題(原卷版+解析版)
- 食品安全自查、從業(yè)人員健康管理、進(jìn)貨查驗(yàn)記錄、食品安全事故處置等保證食品安全的規(guī)章制度
- 成人腸內(nèi)營養(yǎng)支持的護(hù)理課件
評論
0/150
提交評論