版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章本章要點(diǎn)數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則
主要內(nèi)容2.1基本數(shù)據(jù)類(lèi)型與常數(shù)的表示2.2變量與內(nèi)存2.3運(yùn)算符與表達(dá)式2.4輸入輸出函數(shù)
§2.1基本數(shù)據(jù)類(lèi)型與常數(shù)的表示2.1.1基本數(shù)據(jù)類(lèi)型C語(yǔ)言提供了以下一些數(shù)據(jù)類(lèi)型。
數(shù)據(jù)類(lèi)型構(gòu)造類(lèi)型指針類(lèi)型空類(lèi)型(無(wú)值類(lèi)型)void枚舉類(lèi)型enum數(shù)組類(lèi)型結(jié)構(gòu)體類(lèi)型struct共用體類(lèi)型union基本類(lèi)型整型int字符型char實(shí)型(浮點(diǎn)型)單精度實(shí)型float雙精度實(shí)型double2.1.2常量和符號(hào)常量在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量常量區(qū)分為不同的類(lèi)型:整型100,-100,0,010,0x12實(shí)型3.14,0.125,.5,-1.5,1.75e4字符型‘a(chǎn)’,‘?’,‘2’,‘\n’字符串“a”,“C程序”,“1232”整型常量按原樣輸出實(shí)型(浮點(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
規(guī)范化的指數(shù)形式:
在字母e(或E)之前的小數(shù)部分中,小數(shù)點(diǎn)左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.例如:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱(chēng)為“規(guī)范化的指數(shù)形式”。字符常量(1)用單引號(hào)包含的一個(gè)字符是字符型常量(2)只能包含一個(gè)字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”
有些以“\”開(kāi)頭的特殊字符稱(chēng)為轉(zhuǎn)義字符\n換行,將當(dāng)前位置移到下一行開(kāi)頭\t橫向跳格\r回車(chē),將當(dāng)前位置移到本行開(kāi)頭\b退格,將當(dāng)前位置移到前一列\(zhòng)\反斜杠\dddddd表示1到3位八進(jìn)制數(shù)字\xhhhh表示1到2位十六進(jìn)制數(shù)字【例】2.1幾個(gè)常數(shù)的輸出例轉(zhuǎn)義字符舉例
#include<stdio.h>
void
main()
{
printf("\101\x42C\n");
printf("Isay:\"Howareyou?\"\n");
printf("\\CProgram\\\n");
printf("Turbo\'C\'");
}
運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出:¥例main(){printf(“Y\b=\n”);}字符串常量字符串常量是一對(duì)雙撇號(hào)括起來(lái)的字符序列.合法的字符串常量:“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個(gè)字符串,如printf(“Howdoyoudo.”);
‘a’是字符常量,”a”是字符串常量,二者不同。如:假設(shè)c被指定為字符變量
:charc
c=’a’;c=”a”;c=”CHINA”;結(jié)論:不能把一個(gè)字符串常量賦給一個(gè)字符變量。
C規(guī)定:在每一個(gè)字符串常量的結(jié)尾加一個(gè)“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標(biāo)志。
如:如果有一個(gè)字符串常量”CHINA”,實(shí)際上在內(nèi)存中是:CHINA\0
它占內(nèi)存單元不是5個(gè)字符,而是6個(gè)字符,最后一個(gè)字符為’\0’。但在輸出時(shí)不輸出’\0’。2.2.1標(biāo)識(shí)符作用:用于給程序中的各元素(常量、變量、函數(shù)等)標(biāo)示類(lèi)型和命名。定義:字母或下劃線開(kāi)頭的字母、數(shù)字、下劃線組成的字串。例如:ab,sum1,_12x,y_1,t_12等都是C語(yǔ)言允許的標(biāo)識(shí)符。
5gb,tr?,ddp#,liyi,ab+cd等都不是C語(yǔ)言的標(biāo)識(shí)符
標(biāo)識(shí)符長(zhǎng)度無(wú)統(tǒng)一規(guī)定,一般只識(shí)別前8個(gè)字符。在C語(yǔ)言中,標(biāo)識(shí)符對(duì)字母的大小寫(xiě)是有區(qū)分(敏感)的。例如:count、COUNT和Count被認(rèn)為是三個(gè)不同的標(biāo)識(shí)符。2.關(guān)鍵字
即系統(tǒng)已使用的標(biāo)識(shí)符。保留給系統(tǒng)使用,用戶(hù)不能使用。2.2變量與內(nèi)存例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123例符號(hào)常量的使用
#definePRICE30
#include<stdio.h>
voidmain()
{
intnum,total;
num=10;
total=num*PRICE;
printf(″total=%d\n″,total);
}說(shuō)明:
程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算說(shuō)明:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的,稱(chēng)為符號(hào)常量,即以標(biāo)識(shí)符形式出現(xiàn)的常量。符號(hào)常量的值在其作用域(在本例中為主函數(shù))內(nèi)不能改變,也不能再被賦值。
說(shuō)明:如再用賦值語(yǔ)句給PRICE賦值是錯(cuò)誤的。PRICE=40;/*錯(cuò)誤,不能給符號(hào)常量賦值。
運(yùn)行結(jié)果:
total=300
§2.2變量與內(nèi)存2.2.2變量的定義與初始化變量代表內(nèi)存中具有特定屬性的一個(gè)存儲(chǔ)單元,它用來(lái)存放數(shù)據(jù),這就是變量的值,在程序運(yùn)行期間,這些值是可以改變的。變量名實(shí)際上是一個(gè)以一個(gè)名字對(duì)應(yīng)代表一個(gè)地址,在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)。變量的命名規(guī)則遵循標(biāo)識(shí)符的命名規(guī)則變量的定義和初始化(“先定義,后使用”)(1)變量定義的一般格式:[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變量名[,變量名2……];例如:floatradius,length,area;(2)變量初始化的一般格式:[存儲(chǔ)類(lèi)型]數(shù)據(jù)類(lèi)型變量名=[初值1][,變量名2[=初值2]……];例如:floatradius=2.5,length,area;不允許連續(xù)賦值:如inta=b=5;
變量定義原理編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內(nèi)存1-3隨機(jī)數(shù)整型變量
(1)整型數(shù)據(jù)在內(nèi)存中的存放形式
數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。
如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/(2)整型變量的分類(lèi):共六種有符號(hào)基本整型有符號(hào)短整型有符號(hào)長(zhǎng)整型無(wú)符號(hào)基本整型無(wú)符號(hào)短整型無(wú)符號(hào)長(zhǎng)整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)
注意:括號(hào)表示其中的內(nèi)容是可選的.ANSIC標(biāo)準(zhǔn)定義的整數(shù)類(lèi)型:
類(lèi)型類(lèi)型說(shuō)明符長(zhǎng)度數(shù)的范圍基本型int2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長(zhǎng)整型long4字節(jié)-231~231-1無(wú)符號(hào)整型unsigned2字節(jié)0~65535無(wú)符號(hào)短整型unsignedshort2字節(jié)0~65535無(wú)符號(hào)長(zhǎng)整型unsignedlong4字節(jié)0~(232-1)例整型變量的定義與使用
#include<stdio.h>
voidmain()
{inta,b,c,d;/*指定a、b、c、d為整型變量*/
unsignedu;/*指定u為無(wú)符號(hào)整型變量*/
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(″a+u=%d,b+u=%d\n″,c,d);
}說(shuō)明:
可以看到不同種類(lèi)的整型數(shù)據(jù)可以進(jìn)行算術(shù)運(yùn)算運(yùn)行結(jié)果:
a+u=22,b+u=-14
例整型數(shù)據(jù)的溢出
#include<stdio.h>
voidmain()
{inta,b;
a=32767;
b=a+1;
printf(“%d,%d\n”,a,b);
}
說(shuō)明:數(shù)值是以補(bǔ)碼表示的。一個(gè)整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無(wú)法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運(yùn)行結(jié)果:
32767,-32768類(lèi)型位數(shù)數(shù)的范圍有效數(shù)字float3210-37~10386~7位double型6410-307~1030815~16位longdouble12810-4931~10493218~19位實(shí)型(浮點(diǎn)型)變量(1)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式
一個(gè)浮點(diǎn)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)字節(jié)(32位)。(2)浮點(diǎn)型變量的分類(lèi)
浮點(diǎn)型變量分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度型(longdouble)三類(lèi)形式。例浮點(diǎn)型數(shù)據(jù)的舍入誤差
#include<stdio.h>
voidmain()
{floata,b;
a=123456.789e5;
b=a+20;
printf(“%f\n”,b);
}
說(shuō)明:一個(gè)浮點(diǎn)型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無(wú)意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減,否則就會(huì)“丟失”小的數(shù)運(yùn)行結(jié)果:
123456.789e5【例】2.3字符變量字符型變量用來(lái)存放字符常量,注意只能放一個(gè)字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語(yǔ)句對(duì)c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)。
字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法將一個(gè)字符常量放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個(gè)字符數(shù)據(jù)既可以以字符形式輸出,也可以以整數(shù)形式輸出。例向字符變量賦以整數(shù)。
#include<stdio.h>
voidmain()
{charc1,c2;
c1=97;
c2=98;
printf(“%c%c\n”,c1,c2);
printf(“%d%d\n”,c1,c2);
}
說(shuō)明:在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個(gè)賦值語(yǔ)句: c1=′a′;c2=′b′;因?yàn)椤痑’和’b’的ASCII碼為97和98運(yùn)行結(jié)果:ab9798【例】2.4例大小寫(xiě)字母的轉(zhuǎn)換
#include<stdio.h>
voidmain()
{charc1,c2;
c1=’a’;
c2=’b’;
c1=c1-32;
c2=c2-32;
printf(“%c%c″,c1,c2);
}說(shuō)明:程序的作用是將兩個(gè)小寫(xiě)字母a和b轉(zhuǎn)換成大寫(xiě)字母A和B。從ASCII代碼表中可以看到每一個(gè)小寫(xiě)字母比它相應(yīng)的大寫(xiě)字母的ASCII碼大32。C語(yǔ)言允許字符數(shù)據(jù)與整數(shù)直接進(jìn)行算術(shù)運(yùn)算。
運(yùn)行結(jié)果:AB
【例】2.5
§2.3運(yùn)算符和表達(dá)式C的運(yùn)算符有以下幾類(lèi):(1)算術(shù)運(yùn)算符(+-*/%)(2)關(guān)系運(yùn)算符(><>=<===!=)(3)邏輯運(yùn)算符(!&&||)(4)賦值運(yùn)算符(=)(5)條件運(yùn)算符(?:)(6)逗號(hào)運(yùn)算符(,)(7)指針運(yùn)算符(*和&)(8)強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符((類(lèi)型))(9)下標(biāo)運(yùn)算符([])2.3.1算術(shù)運(yùn)算符與算術(shù)表達(dá)式
(1)基本的算術(shù)運(yùn)算符:+(加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)*(乘法運(yùn)算符。如:3*5)/(除法運(yùn)算符。如:5/3)%(模運(yùn)算符,或稱(chēng)求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。(2)算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性:
用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子,稱(chēng)為C算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。
例如:
a*b/c-1.5+′a′是一個(gè)合法的表達(dá)式C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,例如先乘除后加減。C規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性)算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇保聪茸蠛笥??!纠?.6(3)數(shù)據(jù)類(lèi)型轉(zhuǎn)換:在C語(yǔ)言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算(因?yàn)樽址麛?shù)據(jù)與整型數(shù)據(jù)可以通用)。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類(lèi)型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類(lèi)型,然后在同一類(lèi)型數(shù)據(jù)間進(jìn)行運(yùn)算。較低類(lèi)型向較高類(lèi)型轉(zhuǎn)換。
類(lèi)型級(jí)別的高低:字符型<整型<單精度實(shí)型<雙精度實(shí)型(4)強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符:
除自動(dòng)轉(zhuǎn)換外,C語(yǔ)言可以利用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類(lèi)型。一般形式:(類(lèi)型名)(表達(dá)式)例如:(double)a將a轉(zhuǎn)換成double類(lèi)型(float)(5%3)將5%3的值轉(zhuǎn)換成float型從高類(lèi)型到低類(lèi)型的轉(zhuǎn)換會(huì)發(fā)生存儲(chǔ)字節(jié)的減少,從而可能會(huì)發(fā)生數(shù)據(jù)的截?cái)嗨斐傻臄?shù)據(jù)損害。例強(qiáng)制類(lèi)型轉(zhuǎn)換。
#include<stdio.h>
voidmain()
{floatx;
inti;
x=3.6;
i=(int)x;
printf("x=%f,i=%d\n",x,i);
}
說(shuō)明:有兩種類(lèi)型轉(zhuǎn)換,一種是在運(yùn)算時(shí)不必用戶(hù)指定,系統(tǒng)自動(dòng)進(jìn)行的類(lèi)型轉(zhuǎn)換,如3+6.5。第二種是強(qiáng)制類(lèi)型轉(zhuǎn)換。當(dāng)自動(dòng)類(lèi)型轉(zhuǎn)換不能實(shí)現(xiàn)目的時(shí),可以用強(qiáng)制類(lèi)型轉(zhuǎn)換。運(yùn)行結(jié)果:
x=3.600000,i=3(4)
自增、自減運(yùn)算符
作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加/減1)i++,i--(在使用i之后,使i的值加/減1)
i++與++i的區(qū)別:
++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:若i的初值為3①j=++i;i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋醋⒁猓?/p>
(1)自增運(yùn)算符(++),自減運(yùn)算符(--),只能用于變量,而不能用于常量或表達(dá)式,(2)++和--的結(jié)合方向是“自右至左”?!纠?.9(5)有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明
①ANSIC并沒(méi)有具體規(guī)定表達(dá)式中的子表達(dá)式的求值順序,允許各編譯系統(tǒng)自己安排。例如:對(duì)表達(dá)式a=f1()+f2()并不是所有的編譯系統(tǒng)都先調(diào)用f1(),然后調(diào)用f2()。在有的情況下結(jié)果可能不同。有時(shí)會(huì)出現(xiàn)一些令人容易搞混的問(wèn)題,因此務(wù)必要小心謹(jǐn)慎。
②C語(yǔ)言中有的運(yùn)算符為一個(gè)字符,有的運(yùn)算符由兩個(gè)字符組成為避免誤解,最好采取大家都能理解的寫(xiě)法。例如:不要寫(xiě)成i+++j的形式,而應(yīng)寫(xiě)成(i++)+j的形式
③在調(diào)用函數(shù)時(shí),實(shí)參數(shù)的求值順序,C標(biāo)準(zhǔn)并無(wú)統(tǒng)一規(guī)定。例如:i的初值為3,如果有下面的函數(shù)調(diào)用:printf(″%d,%d″,i,i++)在有的系統(tǒng)中,從左至右求值,輸出“3,3”。在多數(shù)系統(tǒng)中對(duì)函數(shù)參數(shù)的求值順序是自右而左,printf函數(shù)輸出的是“4,3”。以上這種寫(xiě)法不宜提倡,最好改寫(xiě)成j=i++;printf("%d,%d",j,i)不要寫(xiě)出別人看不懂的也不知道系統(tǒng)會(huì)怎樣執(zhí)行程序
2.3.2賦值運(yùn)算符與賦值表達(dá)式
(1)賦值運(yùn)算符
賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如“a=3”的作用是執(zhí)行一次賦值操作(或稱(chēng)賦值運(yùn)算)。把常量3賦給變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量.
(2)類(lèi)型轉(zhuǎn)換
如果賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,但都是數(shù)值型或字符型時(shí),在賦值時(shí)要進(jìn)行類(lèi)型轉(zhuǎn)換。例如:①將浮點(diǎn)型數(shù)據(jù)(包括單、雙精度)賦給整型變量時(shí),舍棄浮點(diǎn)數(shù)的小數(shù)部分。如:i為整型變量,執(zhí)行“i=3.56”的結(jié)果是使i的值為3,以整數(shù)形式存儲(chǔ)在整型變量中.
②將整型數(shù)據(jù)賦給單、雙精度變量時(shí),數(shù)值不變,但以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中
如:
將23賦給float變量f,即執(zhí)行f=23,先將23轉(zhuǎn)換成23.00000,再存儲(chǔ)在f中。將23賦給double型變量d,即執(zhí)行d=23,則將23補(bǔ)足有效位數(shù)字為23.00000000000000,然后以雙精度浮點(diǎn)數(shù)形式存儲(chǔ)到變量d中。
【例】2.7
(3)復(fù)合的賦值運(yùn)算符
在賦值符“=”之前加上其他運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。例如:a+=3等價(jià)于a=a+3x*=y+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=x%3以“a+=3”為例來(lái)說(shuō)明,它相當(dāng)于使a進(jìn)行一次自加(3)的操作。即先使a加3,再賦給a。注意:如果b是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。如:①x%=y+3②x=x%(y+3)(不要錯(cuò)寫(xiě)成x=x%y+3)凡是二元(二目)運(yùn)算符,都可以與賦值符一起組合成復(fù)合賦值符。(4)賦值表達(dá)式由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱(chēng)為“賦值表達(dá)式”。一般形式為:
<變量><賦值運(yùn)算符><表達(dá)式>
例如:“a=5”是一個(gè)賦值表達(dá)式
對(duì)賦值表達(dá)式求解的過(guò)程是:①求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值;②賦給賦值運(yùn)算符左側(cè)的變量。例如:賦值表達(dá)式“a=3*5”的值為15,執(zhí)行表達(dá)式后,變量a的值也是15。
注意:
一個(gè)表達(dá)式應(yīng)該有一個(gè)值
賦值表達(dá)式中的“表達(dá)式”,又可以是一個(gè)賦值表達(dá)式.例如:a=(b=5)
分析:括弧內(nèi)的“b=5”是一個(gè)賦值表達(dá)式,它的值等于5。執(zhí)行表達(dá)式“a=(b=5)”相當(dāng)于執(zhí)行“b=5”和“a=b”兩個(gè)賦值表達(dá)式。賦值運(yùn)算符按照“自右而左”的結(jié)合順序,因此,“(b=5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價(jià).請(qǐng)分析下面的賦值表達(dá)式∶(a=3*5)=4*3分析:先執(zhí)行括弧內(nèi)的運(yùn)算,將15賦給a,然后執(zhí)行4*3的運(yùn)算,得12,再把12賦給a。最后a的值為12,整個(gè)表達(dá)式的值為12。注意:在對(duì)賦值表達(dá)式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時(shí),實(shí)際上是將4*3的積12賦給變量a,而不是賦給3*5。賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。
如:a+=a-=a*aa的初值為12分析:此賦值表達(dá)式的求解步驟如下∶①先進(jìn)行“a-=a*a”的運(yùn)算,它相當(dāng)于a=a-a*a,a的值為12-144=-132。②再進(jìn)行“a+=-132”的運(yùn)算,相當(dāng)于a=a+(-132),a的值為-132-132=-264。
將賦值表達(dá)式作為表達(dá)式的一種,使賦值操作不僅可以出現(xiàn)在賦值語(yǔ)句中,而且可以以表達(dá)式形式出現(xiàn)在其他語(yǔ)句(如輸出語(yǔ)句、循環(huán)語(yǔ)句等)中.如:printf("%d",a=b);
分析:如果b的值為3,則輸出a的值(也是表達(dá)式a=b的值)為3。在一個(gè)語(yǔ)句中完成了賦值和輸出雙重功能。2.3.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符:將兩個(gè)表達(dá)式連接起來(lái),又稱(chēng)為“順序求值運(yùn)算符”
如:3+5,6+8
一般形式:
表達(dá)式1,表達(dá)式2求解過(guò)程:先求解表達(dá)式1,再求解表達(dá)式2。整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。
逗號(hào)表達(dá)式的值為14
2.3.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式例:逗號(hào)表達(dá)式a=3*5,a*4
分析:賦值運(yùn)算符的優(yōu)先級(jí)別高于逗號(hào)運(yùn)算符,因此應(yīng)先求解a=3*5.a的值為15,然后求解a*4,得60。整個(gè)逗號(hào)表達(dá)式的值為60。
一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式如:(a=3*5,a*4),a+5a+5先計(jì)算出a的值等于15,再進(jìn)行a*4的運(yùn)算得60(但a值未變,仍為15),再進(jìn)行a+5得20,即整個(gè)表達(dá)式的值為20。
2.3.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為
表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表達(dá)式n它的值為表達(dá)式n的值。逗號(hào)運(yùn)算符是所有運(yùn)算符中級(jí)別最低的例:①x=(a=3,6*3)②x=a=3,6*3賦值表達(dá)式,將一個(gè)逗號(hào)表達(dá)式的值賦給x,x的值等于18逗號(hào)表達(dá)式,包括一個(gè)賦值表達(dá)式和一個(gè)算術(shù)表達(dá)式,x的值為3,整個(gè)逗號(hào)表達(dá)式的值為18。注意:并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符。例如函數(shù)參數(shù)也是用逗號(hào)來(lái)間隔的。如:printf(“%d,%d,%d”,a,b,c);“a,b,c”并不是一個(gè)逗號(hào)表達(dá)式,它是printf函數(shù)的3個(gè)參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c);“(a,b,c)”是一個(gè)逗號(hào)表達(dá)式,它的值等于c的值。
2.3.3逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式2.3.4條件運(yùn)算符和表達(dá)式一般形式:expr1?expr2:expr3執(zhí)行過(guò)程功能:相當(dāng)于條件語(yǔ)句,但不能取代一般if語(yǔ)句expr1取expr2值取expr3值非0=0例if(a>b)printf(“%d”,a);elseprintf(“%d”,b);printf(“%d”,a>b?a:b);例求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條件運(yùn)算符可嵌套
如x>0?1:(x<0?-1:0)結(jié)合方向:自右向左
如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3類(lèi)型可不同,表達(dá)式值取較高的類(lèi)型例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.52.3.5常用數(shù)學(xué)函數(shù)(1)頭文件包含#include<>例如:#include<math.h>#include<stdio.h>(2)函數(shù)原型intabs(intx)doublefabs(doublex)doublesqrt(doublex)doublepow(doublex,doubley)(3)參數(shù)的定義域【例】2.81.優(yōu)先級(jí)高括號(hào)、成員運(yùn)算符()[]—>單目運(yùn)算算術(shù)運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算(除!外)條件運(yùn)算賦值運(yùn)算低逗號(hào)運(yùn)算2.結(jié)合性指運(yùn)算數(shù)與運(yùn)算符的結(jié)合方向.
(見(jiàn)208頁(yè))2.3.6優(yōu)先級(jí)與結(jié)合性2.4數(shù)據(jù)輸入/輸出(I/O)
2.4.1printf輸出函數(shù)
1.格式輸出函數(shù)printf()
格式:printf(“格式控制字串”,輸出項(xiàng)表)
輸出項(xiàng):{常量|變量|表達(dá)式}格式控制說(shuō)明符,規(guī)定用%打頭,其后跟上一個(gè)符合規(guī)定的字母,不同的字母的含義不一樣。常用的有:
%d按十進(jìn)制整數(shù)輸出%o按八進(jìn)制輸出
%f按數(shù)據(jù)實(shí)型輸出%c輸出單個(gè)字符【例】
注意:輸出項(xiàng)的個(gè)數(shù)要與格式說(shuō)明符的個(gè)數(shù)相同,輸出項(xiàng)與對(duì)應(yīng)的格式說(shuō)明符的類(lèi)型必須一致。如果沒(méi)有輸出項(xiàng)表,就不要有格式控制字符串;如:printf(“helloworld!”);
inta=4;floatb=5.4;printf(“a=%d,b=%f,a*b=%f”,a,b,a*b);【例】2.10【例】2.112.4.2
scanf格式輸入函數(shù)
格式:
scanf(“格式控制字串”,輸入地址表)
輸入地址表項(xiàng):{&變量名|數(shù)組名}
(a)格式控制說(shuō)明符:規(guī)定用%打頭,其后跟上一個(gè)符合規(guī)定的字母,不同的字母的含義不一樣,常用的有:
%d按十進(jìn)制整數(shù)輸入%o按八進(jìn)制輸入
%f按實(shí)型數(shù)據(jù)輸入%c輸入單個(gè)字符
注意:格式控制字符串中一般不包含普通字符,輸入多個(gè)數(shù)據(jù)中間用空格(或跳格和回車(chē)符)作為輸入數(shù)據(jù)的間隔。
(b)輸入項(xiàng)表
輸入項(xiàng)表格項(xiàng)之間用逗號(hào)隔開(kāi),輸入項(xiàng)必須是變量的地址。這可以在變量名前加取地址運(yùn)算符&,輸入項(xiàng)的個(gè)數(shù)要與格式說(shuō)明符的個(gè)數(shù)相同,輸入項(xiàng)與對(duì)應(yīng)的格式說(shuō)明符的類(lèi)型必須按順序?qū)?yīng)一致,每一種數(shù)據(jù)類(lèi)型,都有專(zhuān)門(mén)的格式說(shuō)明符。main(){inta;floatx,y;scanf(“%d%f%f”,&a,&x,&y);printf(“%d%f%f”,a,x,y);}例scanf(“%d”,&a);
輸入:10
則a=10例scanf(“%x”,&a);
輸入:11
則a=17附加格式說(shuō)明符(修飾符)l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育實(shí)踐課程設(shè)計(jì)
- 管桁架施工組織設(shè)計(jì)方案
- 快遞員工勞動(dòng)合同
- 小考備考交流會(huì)發(fā)言稿
- 初中數(shù)學(xué)教學(xué)教研組工作總結(jié)
- 施工應(yīng)急方案
- 2024年礦石產(chǎn)品銷(xiāo)售協(xié)議范本版
- 低壓配電設(shè)備年度采購(gòu)協(xié)議2024版
- 護(hù)欄施工合同(個(gè)人學(xué)習(xí)版本)
- 醫(yī)療事故處理應(yīng)急預(yù)案
- 陜西省渭南市臨渭區(qū)渭南市三賢中學(xué)2024-2025學(xué)年高一上學(xué)期11月期中考試生物試題(無(wú)答案)
- 游樂(lè)園設(shè)施建設(shè)合同三篇
- 2024上半年半導(dǎo)體行業(yè)招聘報(bào)告-易展翅HR
- 4公民的基本權(quán)利和義務(wù) 第三課時(shí)《國(guó)家尊重和保障人權(quán)》教學(xué)設(shè)計(jì)-2024-2025學(xué)年道德與法治六年級(jí)上冊(cè)統(tǒng)編版
- 【核心素養(yǎng)目標(biāo)】6.1質(zhì)量 教學(xué)設(shè)計(jì) 2023-2024學(xué)年人教版物理八年級(jí)上學(xué)期
- 四川省食品生產(chǎn)企業(yè)食品安全員理論考試題庫(kù)(含答案)
- 期中考試(1-4單元)(試題)-2024-2025學(xué)年六年級(jí)上冊(cè)數(shù)學(xué)西師大版
- 2024-2030年中國(guó)椰子行業(yè)市場(chǎng)運(yùn)行分析及發(fā)展趨勢(shì)與投資發(fā)展策略研究報(bào)告
- 財(cái)政學(xué)-第16章-政府預(yù)算與預(yù)算管理體制
- 時(shí)間介詞in,on,at的區(qū)別 教學(xué)課件
- 2023年中國(guó)建設(shè)銀行建銀工程咨詢(xún)有限責(zé)任公司招聘考試真題及答案
評(píng)論
0/150
提交評(píng)論