第2章數(shù)據(jù)類型運(yùn)算符和表達(dá)式_第1頁(yè)
第2章數(shù)據(jù)類型運(yùn)算符和表達(dá)式_第2頁(yè)
第2章數(shù)據(jù)類型運(yùn)算符和表達(dá)式_第3頁(yè)
第2章數(shù)據(jù)類型運(yùn)算符和表達(dá)式_第4頁(yè)
第2章數(shù)據(jù)類型運(yùn)算符和表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式內(nèi)容提要基本數(shù)據(jù)類型;常量和變量;標(biāo)識(shí)符命名;常用運(yùn)算符和表達(dá)式;運(yùn)算符的優(yōu)先級(jí)與結(jié)合性一個(gè)簡(jiǎn)單的C程序例子#include<stdio.h>/*函數(shù)功能:計(jì)算兩個(gè)整數(shù)相加之和

入口參數(shù):整型數(shù)據(jù)a和b

返回值:整型數(shù)a和b之和*/int

Add(inta,intb){

return(a+b);}/*主函數(shù)*/voidmain(){

intx,y,sum=0; printf("Inputtwointegers:"); scanf("%d%d",&x,&y);/*輸入兩個(gè)整型數(shù)x和y*/ sum=Add(x,y);/*調(diào)用函數(shù)Add計(jì)算x和y相加之和*/ printf("sum=%d\n",sum);/*輸出x和y相加之和*/}C程序常見(jiàn)符號(hào)分類關(guān)鍵字(Keyword)又稱為保留字,C語(yǔ)言中預(yù)先規(guī)定的具有固定含義的一些單詞標(biāo)識(shí)符(Identifier)系統(tǒng)預(yù)定義標(biāo)識(shí)符用戶自定義標(biāo)識(shí)符運(yùn)算符(Operator)34種分隔符(Separator)空格、回車/換行、逗號(hào)等其它符號(hào)大花括號(hào)“{”和“}”通常用于標(biāo)識(shí)函數(shù)體或者一個(gè)語(yǔ)句塊“/*”和“*/”是程序注釋所需的定界符數(shù)據(jù)(Data)變量(Variable)常量(Constant)數(shù)據(jù)類型(DataType)數(shù)據(jù)為什么要區(qū)分類型?不同類型的數(shù)據(jù)代表不同的數(shù)據(jù)表示形式合法的取值范圍占用內(nèi)存空間大小可參與的運(yùn)算種類從基本數(shù)據(jù)類型到抽象數(shù)據(jù)類型無(wú)數(shù)據(jù)類型基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型抽象數(shù)據(jù)類型數(shù)據(jù)類型(DataType)數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型實(shí)型(浮點(diǎn)型)字符型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型單精度實(shí)型雙精度實(shí)型基本整型長(zhǎng)整型短整型無(wú)符號(hào)整型標(biāo)識(shí)符命名變量名函數(shù)名由英文字母、數(shù)字和下劃線組成,大小寫(xiě)敏感不可以是數(shù)字開(kāi)頭直觀,見(jiàn)名知意,便于記憶和閱讀最好使用英文單詞或其組合下劃線和大小寫(xiě)通常用來(lái)增強(qiáng)可讀性variablenamevariable_nameVariableName,variableName不允許使用關(guān)鍵字作為標(biāo)識(shí)符的名字

int,float,for,while,if等某些功能的變量采用習(xí)慣命名如:for語(yǔ)句所采用的循環(huán)變量習(xí)慣用i,j,kWindows風(fēng)格UNIX風(fēng)格b,B,KB,MB,GB,TBMegabyte(MB),中文叫法:兆Kilobyte(KB),中文叫法:

KByte,中文叫法:字節(jié)bit,中文叫法:位Gigabyte(GB),中文叫法:GTerabyte(TB),中文叫法:T1TB==

1,024GB1GB

==

1,024MB1MB

==

1,024KB1KB

==

1,024B1B==

8bb,B,KB,MB,GB,TB一個(gè)位有多大?只能是“0”或者“1”,這叫二進(jìn)制一個(gè)字節(jié)有多大?保存一個(gè)字符(英文字母、數(shù)字、符號(hào))ASCII(美國(guó)標(biāo)準(zhǔn)信息交換碼)編碼兩個(gè)字節(jié)保存一個(gè)漢字GB編碼可以表示數(shù)字0~255基本數(shù)據(jù)類型int整數(shù),在目前絕大多數(shù)機(jī)器上占4個(gè)字節(jié)。float單精度浮點(diǎn)數(shù),一般是4個(gè)字節(jié)長(zhǎng)double雙精度浮點(diǎn)數(shù),一般是8個(gè)字節(jié)長(zhǎng)char字符,一般是1個(gè)字節(jié)長(zhǎng)用來(lái)表示256個(gè)ASCII字符,或者0~255的整數(shù)數(shù)據(jù)類型修飾符shortshort

int,短整數(shù),一般2個(gè)字節(jié)長(zhǎng)。通常簡(jiǎn)寫(xiě)為shortlonglong

int,長(zhǎng)整數(shù),一般是4個(gè)字節(jié)長(zhǎng)。通常簡(jiǎn)寫(xiě)為longlong

double,長(zhǎng)雙精度(高精度)浮點(diǎn)數(shù),一般是10個(gè)字節(jié)長(zhǎng)。signed用來(lái)修飾char、int、short和long,說(shuō)明他們是有符號(hào)的整數(shù)(正整數(shù)、0和負(fù)整數(shù))。一般缺省都是有符號(hào)的,所以這個(gè)修飾符通常省略u(píng)nsigned用來(lái)修飾char、int、short和long,說(shuō)明他們是無(wú)符號(hào)的整數(shù)(正整數(shù)和0)使用變量要注意不要對(duì)變量所占的內(nèi)存空間字節(jié)數(shù)想當(dāng)然用sizeof獲得變量或者數(shù)據(jù)類型的長(zhǎng)度注意!#include<stdio.h>voidmain(){

printf("DatatypeNumberofbytes\n");

printf("---------------------------------\n");

printf("char%d\n",sizeof(char));

printf("int%d\n",sizeof(int));

printf("shortint%d\n",sizeof(short));

printf("longint%d\n",sizeof(long));

printf("float%d\n",sizeof(float));

printf("double%d\n",sizeof(double));}變量聲明使用變量的基本原則變量必須先定義,后使用所有變量必須在第一條可執(zhí)行語(yǔ)句前定義聲明的順序無(wú)關(guān)緊要一條聲明語(yǔ)句可聲明若干個(gè)同類型的變量聲明變量,是初始化變量的最好時(shí)機(jī)不被初始化的變量,其值為危險(xiǎn)的隨機(jī)數(shù) charesc='a'; inti=1; intsum=0; floateps=1.0e-5;實(shí)型數(shù)據(jù)提供的有效數(shù)字位數(shù)float型數(shù)據(jù)提供7位有效數(shù)字double型數(shù)據(jù)提供16位有效數(shù)字使用不當(dāng)導(dǎo)致舍入誤差#include<stdio.h>voidmain(){

floata;

doubleb; a=123456.789e4; b=123456.789e4;

printf("%f\n%f\n",a,b);}char型與int型之間的關(guān)系小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母#include<stdio.h>main(){

charch='b';

ch='b'-32;

printf("%c,%d\n",ch,ch);}#include<stdio.h>main(){

charch='b';

ch='b'-('a'-'A')

;

printf("%c,%d\n",ch,ch);}常數(shù)(Constant)整型常數(shù)18、-31長(zhǎng)整型常量123l、123L、123456l、123456L無(wú)符號(hào)型常量123u、123U浮點(diǎn)常數(shù)十進(jìn)制小數(shù)形式123.45、456.78指數(shù)形式1e-2、4.5e3單精度實(shí)型常量123.45f、456.78F、1e-2f、4.5e3F長(zhǎng)雙精度型常量123.45l、456.78L、1e-2l、4.5e3L八進(jìn)制與十六進(jìn)制常數(shù)以數(shù)字“0”開(kāi)始的整型常數(shù)是八進(jìn)制數(shù)022、-037010和10大小不一樣因?yàn)榘诉M(jìn)制并不常用,所以此種表示法比較少見(jiàn)以“0x”或者“0X”開(kāi)始的整型常數(shù)是十六進(jìn)制A~F和a~f用來(lái)表示十進(jìn)制的10~15十六進(jìn)制的形式比較常用,尤其在進(jìn)行位一級(jí)的控制的時(shí)候0x12、-0x1F,-0x1f字符(Character)常數(shù)字符常數(shù)的表示方法’a’,’A’,’5’,’%’,’$’……單引號(hào)內(nèi)只能有一個(gè)字符,除非用“\”開(kāi)頭就是一個(gè)普通整數(shù),也可以參與各種數(shù)學(xué)運(yùn)算每個(gè)字符具有一個(gè)0~255之間的數(shù)值,可從ASCII表查出注意:’5’和整數(shù)5的區(qū)別字符的數(shù)學(xué)運(yùn)算在密碼學(xué)內(nèi)用得比較多字符常數(shù)轉(zhuǎn)義字符一些特殊字符(無(wú)法從鍵盤(pán)輸入或者另有它用)用轉(zhuǎn)義字符表示字符串(String)常數(shù)用雙引號(hào)括住的由0個(gè)或多個(gè)字符組成的字符序列"Iamastring"""表示空字符串轉(zhuǎn)義字符也可以在字符串中使用引號(hào)只作為字符串開(kāi)始和結(jié)束的標(biāo)志C語(yǔ)言內(nèi)部用’\0’表示字符串的結(jié)束除注釋外,是唯一可以出現(xiàn)中文的地方"x"和’x’是不同的<string.h>里定義了一系列專門(mén)的字符串處理函數(shù)宏常量宏常量也稱符號(hào)常量一般采用大寫(xiě)字母表示#define標(biāo)識(shí)符字符串不是語(yǔ)句,而是一種編譯預(yù)處理命令宏替換(MacroSubstitulition)#include<stdio.h>#definePI3.14159#defineR5.3main(){

printf("area=%f\n",PI*R*R);

printf("circumference=%f\n",2*PI*R);}宏常量宏常量也稱符號(hào)常量一般采用大寫(xiě)字母表示#define標(biāo)識(shí)符字符串不是語(yǔ)句,而是一種編譯預(yù)處理命令宏替換(MacroSubstitulition)#include<stdio.h>#definePI3.14159#defineR5.3main(){

printf("PI*R*R=%f\n",PI*R*R);

printf("2*PI*R=%f\n",2*PI*R);}const常量用const修飾定義的變量為常量const

floatpi=3.1425926;

常量只能在定義時(shí)賦值,然后不能再改變其值常數(shù)、const常量、宏常量和枚舉常量,都可以用來(lái)表示一個(gè)永遠(yuǎn)不會(huì)改變的數(shù)前者不建議直接使用,而用后三者代替算術(shù)運(yùn)算符+,-,*,/加、減、乘、除運(yùn)算四則混合運(yùn)算中,先算乘除,后算加減,

按從左向右的順序計(jì)算,左結(jié)合%求余運(yùn)算常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)函數(shù)名功能函數(shù)名功能sqrt(x)計(jì)算x的平方根,x應(yīng)大于等于0exp(x)計(jì)算ex的值fabs(x)計(jì)算x的絕對(duì)值pow(x,y)計(jì)算xy的值log(x)計(jì)算lnx的值sin(x)計(jì)算sinx的值,x為弧度值log10(x)計(jì)算lgx的值cos(x)計(jì)算cosx的值,x為弧度值關(guān)系運(yùn)算符>,>=,<,<=,==,!=大于,大于等于,小于,小于等于,等于,不等于關(guān)系運(yùn)算符運(yùn)算出的結(jié)果為0和非00,表示假,即該關(guān)系不成立非0,表示真,即該關(guān)系成立邏輯運(yùn)算符邏輯運(yùn)算也被稱為布爾(Boolean)運(yùn)算&&與運(yùn)算(a>b&&b>c);a大于b,并且b大于c||或運(yùn)算(a>b||b>c);a大于b,或者b大于c!求反(!a);如果a是0,結(jié)果非0;如果a是非0,結(jié)果是0并不改變a的值實(shí)例ch是英文大寫(xiě)字母(ch>='A')&&(ch<='Z')判斷某一年year是否是閏年的條件是滿足下列兩個(gè)條件之一:能被4整除,但不能被100整除;能被400整除;((year%4==0)&&(year%100!=0))||(year%400==0)類型轉(zhuǎn)換在進(jìn)行賦值操作時(shí),會(huì)發(fā)生類型轉(zhuǎn)換將取值范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內(nèi),則平安無(wú)事但是,浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù),會(huì)丟失小數(shù)部分,非四舍五入反之,轉(zhuǎn)換后的結(jié)果必然是錯(cuò)誤的,具體結(jié)果與機(jī)器和實(shí)現(xiàn)方式有關(guān)。避免如此使用字符串與數(shù)值類型之間的轉(zhuǎn)換inti="123"這樣用是不行地atof(),atoi(),atol()把字符串轉(zhuǎn)為double,int和long定義在stdlib.h中sprintf()可以用來(lái)把各種類型的數(shù)值轉(zhuǎn)為字符串定義在stdio.h中自動(dòng)類型轉(zhuǎn)換同種數(shù)據(jù)類型的運(yùn)算結(jié)果,還是該類型不同種數(shù)據(jù)類型的運(yùn)算結(jié)果,是兩種類型中取值范圍更大的那種long

double>double>float>long>int>short>char把數(shù)據(jù)賦值給另外一種類型變量也會(huì)發(fā)生自動(dòng)類型轉(zhuǎn)換從小到大,順利轉(zhuǎn)換從大到小,可能丟失信息(好的編譯器會(huì)發(fā)出警告)類型強(qiáng)轉(zhuǎn)(Casting)消除從大到小的警告l=(long)i;可以通過(guò)“(類型)表達(dá)式”的方式把表達(dá)式的值轉(zhuǎn)為任意類型強(qiáng)轉(zhuǎn)時(shí),你必須知道你在做什么強(qiáng)轉(zhuǎn)與指針,并稱C語(yǔ)言兩大神器,用好了可以呼風(fēng)喚雨,用壞了就損兵折將#include<stdio.h>main(){

intm=5;

printf("m/2=%d\n",m/2);

printf("(float)(m/2)=%f\n",(float)(m/2));

printf("(float)m/2=%f\n",(float)m/2);

printf("m=%d\n",m);}增一和減一運(yùn)算符n++,n--,++n,--n++讓參與運(yùn)算的變量加1,--讓參與運(yùn)算的變量減1作為后綴運(yùn)算符時(shí),先取n的值,然后加/減1作為前綴運(yùn)算符時(shí),先加/減1,然后取n的值m=n++;

等價(jià)于m=n;n++;m=++n;

等價(jià)于n++;m=n;增一和減一運(yùn)算符良好的程序設(shè)計(jì)風(fēng)格提倡:在一行語(yǔ)句中,一個(gè)變量只能出現(xiàn)一次加1或者減1運(yùn)算過(guò)多的加1和減1運(yùn)算混合,不僅可讀性差,而且因?yàn)榫幾g器實(shí)現(xiàn)的方法不同,導(dǎo)致不同編譯器產(chǎn)生不同的運(yùn)行結(jié)果賦值運(yùn)算符下面兩個(gè)語(yǔ)句是等價(jià)的i=i+2;i+=2;+、-、*、/、%、<<、>>、&、^、|運(yùn)算符都可以按此

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論