版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第2章數(shù)據(jù)類型、運算符與表達(dá)式內(nèi)容提要基本數(shù)據(jù)類型;常量和變量;標(biāo)識符命名;常用運算符和表達(dá)式;運算符的優(yōu)先級與結(jié)合性一個簡單的C程序例子#include<stdio.h>/*函數(shù)功能:計算兩個整數(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);/*輸入兩個整型數(shù)x和y*/ sum=Add(x,y);/*調(diào)用函數(shù)Add計算x和y相加之和*/ printf("sum=%d\n",sum);/*輸出x和y相加之和*/}C程序常見符號分類關(guān)鍵字(Keyword)又稱為保留字,C語言中預(yù)先規(guī)定的具有固定含義的一些單詞標(biāo)識符(Identifier)系統(tǒng)預(yù)定義標(biāo)識符用戶自定義標(biāo)識符運算符(Operator)34種分隔符(Separator)空格、回車/換行、逗號等其它符號大花括號“{”和“}”通常用于標(biāo)識函數(shù)體或者一個語句塊“/*”和“*/”是程序注釋所需的定界符數(shù)據(jù)(Data)變量(Variable)常量(Constant)數(shù)據(jù)類型(DataType)數(shù)據(jù)為什么要區(qū)分類型?不同類型的數(shù)據(jù)代表不同的數(shù)據(jù)表示形式合法的取值范圍占用內(nèi)存空間大小可參與的運算種類從基本數(shù)據(jù)類型到抽象數(shù)據(jù)類型無數(shù)據(jù)類型基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型抽象數(shù)據(jù)類型數(shù)據(jù)類型(DataType)數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型實型(浮點型)字符型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型單精度實型雙精度實型基本整型長整型短整型無符號整型標(biāo)識符命名變量名函數(shù)名由英文字母、數(shù)字和下劃線組成,大小寫敏感不可以是數(shù)字開頭直觀,見名知意,便于記憶和閱讀最好使用英文單詞或其組合下劃線和大小寫通常用來增強(qiáng)可讀性variablenamevariable_nameVariableName,variableName不允許使用關(guān)鍵字作為標(biāo)識符的名字
int,float,for,while,if等某些功能的變量采用習(xí)慣命名如:for語句所采用的循環(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一個位有多大?只能是“0”或者“1”,這叫二進(jìn)制一個字節(jié)有多大?保存一個字符(英文字母、數(shù)字、符號)ASCII(美國標(biāo)準(zhǔn)信息交換碼)編碼兩個字節(jié)保存一個漢字GB編碼可以表示數(shù)字0~255基本數(shù)據(jù)類型int整數(shù),在目前絕大多數(shù)機(jī)器上占4個字節(jié)。float單精度浮點數(shù),一般是4個字節(jié)長double雙精度浮點數(shù),一般是8個字節(jié)長char字符,一般是1個字節(jié)長用來表示256個ASCII字符,或者0~255的整數(shù)數(shù)據(jù)類型修飾符shortshort
int,短整數(shù),一般2個字節(jié)長。通常簡寫為shortlonglong
int,長整數(shù),一般是4個字節(jié)長。通常簡寫為longlong
double,長雙精度(高精度)浮點數(shù),一般是10個字節(jié)長。signed用來修飾char、int、short和long,說明他們是有符號的整數(shù)(正整數(shù)、0和負(fù)整數(shù))。一般缺省都是有符號的,所以這個修飾符通常省略unsigned用來修飾char、int、short和long,說明他們是無符號的整數(shù)(正整數(shù)和0)使用變量要注意不要對變量所占的內(nèi)存空間字節(jié)數(shù)想當(dāng)然用sizeof獲得變量或者數(shù)據(jù)類型的長度注意!#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í)行語句前定義聲明的順序無關(guān)緊要一條聲明語句可聲明若干個同類型的變量聲明變量,是初始化變量的最好時機(jī)不被初始化的變量,其值為危險的隨機(jī)數(shù) charesc='a'; inti=1; intsum=0; floateps=1.0e-5;實型數(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)系小寫字母轉(zhuǎn)換為大寫字母#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長整型常量123l、123L、123456l、123456L無符號型常量123u、123U浮點常數(shù)十進(jìn)制小數(shù)形式123.45、456.78指數(shù)形式1e-2、4.5e3單精度實型常量123.45f、456.78F、1e-2f、4.5e3F長雙精度型常量123.45l、456.78L、1e-2l、4.5e3L八進(jìn)制與十六進(jìn)制常數(shù)以數(shù)字“0”開始的整型常數(shù)是八進(jìn)制數(shù)022、-037010和10大小不一樣因為八進(jìn)制并不常用,所以此種表示法比較少見以“0x”或者“0X”開始的整型常數(shù)是十六進(jìn)制A~F和a~f用來表示十進(jìn)制的10~15十六進(jìn)制的形式比較常用,尤其在進(jìn)行位一級的控制的時候0x12、-0x1F,-0x1f字符(Character)常數(shù)字符常數(shù)的表示方法’a’,’A’,’5’,’%’,’$’……單引號內(nèi)只能有一個字符,除非用“\”開頭就是一個普通整數(shù),也可以參與各種數(shù)學(xué)運算每個字符具有一個0~255之間的數(shù)值,可從ASCII表查出注意:’5’和整數(shù)5的區(qū)別字符的數(shù)學(xué)運算在密碼學(xué)內(nèi)用得比較多字符常數(shù)轉(zhuǎn)義字符一些特殊字符(無法從鍵盤輸入或者另有它用)用轉(zhuǎn)義字符表示字符串(String)常數(shù)用雙引號括住的由0個或多個字符組成的字符序列"Iamastring"""表示空字符串轉(zhuǎn)義字符也可以在字符串中使用引號只作為字符串開始和結(jié)束的標(biāo)志C語言內(nèi)部用’\0’表示字符串的結(jié)束除注釋外,是唯一可以出現(xiàn)中文的地方"x"和’x’是不同的<string.h>里定義了一系列專門的字符串處理函數(shù)宏常量宏常量也稱符號常量一般采用大寫字母表示#define標(biāo)識符字符串不是語句,而是一種編譯預(yù)處理命令宏替換(MacroSubstitulition)#include<stdio.h>#definePI3.14159#defineR5.3main(){
printf("area=%f\n",PI*R*R);
printf("circumference=%f\n",2*PI*R);}宏常量宏常量也稱符號常量一般采用大寫字母表示#define標(biāo)識符字符串不是語句,而是一種編譯預(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ù)、const常量、宏常量和枚舉常量,都可以用來表示一個永遠(yuǎn)不會改變的數(shù)前者不建議直接使用,而用后三者代替算術(shù)運算符+,-,*,/加、減、乘、除運算四則混合運算中,先算乘除,后算加減,
按從左向右的順序計算,左結(jié)合%求余運算常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)函數(shù)名功能函數(shù)名功能sqrt(x)計算x的平方根,x應(yīng)大于等于0exp(x)計算ex的值fabs(x)計算x的絕對值pow(x,y)計算xy的值log(x)計算lnx的值sin(x)計算sinx的值,x為弧度值log10(x)計算lgx的值cos(x)計算cosx的值,x為弧度值關(guān)系運算符>,>=,<,<=,==,!=大于,大于等于,小于,小于等于,等于,不等于關(guān)系運算符運算出的結(jié)果為0和非00,表示假,即該關(guān)系不成立非0,表示真,即該關(guān)系成立邏輯運算符邏輯運算也被稱為布爾(Boolean)運算&&與運算(a>b&&b>c);a大于b,并且b大于c||或運算(a>b||b>c);a大于b,或者b大于c!求反(!a);如果a是0,結(jié)果非0;如果a是非0,結(jié)果是0并不改變a的值實例ch是英文大寫字母(ch>='A')&&(ch<='Z')判斷某一年year是否是閏年的條件是滿足下列兩個條件之一:能被4整除,但不能被100整除;能被400整除;((year%4==0)&&(year%100!=0))||(year%400==0)類型轉(zhuǎn)換在進(jìn)行賦值操作時,會發(fā)生類型轉(zhuǎn)換將取值范圍小的類型轉(zhuǎn)為取值范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內(nèi),則平安無事但是,浮點數(shù)轉(zhuǎn)為整數(shù),會丟失小數(shù)部分,非四舍五入反之,轉(zhuǎn)換后的結(jié)果必然是錯誤的,具體結(jié)果與機(jī)器和實現(xiàn)方式有關(guān)。避免如此使用字符串與數(shù)值類型之間的轉(zhuǎn)換inti="123"這樣用是不行地atof(),atoi(),atol()把字符串轉(zhuǎn)為double,int和long定義在stdlib.h中sprintf()可以用來把各種類型的數(shù)值轉(zhuǎn)為字符串定義在stdio.h中自動類型轉(zhuǎn)換同種數(shù)據(jù)類型的運算結(jié)果,還是該類型不同種數(shù)據(jù)類型的運算結(jié)果,是兩種類型中取值范圍更大的那種long
double>double>float>long>int>short>char把數(shù)據(jù)賦值給另外一種類型變量也會發(fā)生自動類型轉(zhuǎn)換從小到大,順利轉(zhuǎn)換從大到小,可能丟失信息(好的編譯器會發(fā)出警告)類型強(qiáng)轉(zhuǎn)(Casting)消除從大到小的警告l=(long)i;可以通過“(類型)表達(dá)式”的方式把表達(dá)式的值轉(zhuǎn)為任意類型強(qiáng)轉(zhuǎn)時,你必須知道你在做什么強(qiáng)轉(zhuǎn)與指針,并稱C語言兩大神器,用好了可以呼風(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);}增一和減一運算符n++,n--,++n,--n++讓參與運算的變量加1,--讓參與運算的變量減1作為后綴運算符時,先取n的值,然后加/減1作為前綴運算符時,先加/減1,然后取n的值m=n++;
等價于m=n;n++;m=++n;
等價于n++;m=n;增一和減一運算符良好的程序設(shè)計風(fēng)格提倡:在一行語句中,一個變量只能出現(xiàn)一次加1或者減1運算過多的加1和減1運算混合,不僅可讀性差,而且因為編譯器實現(xiàn)的方法不同,導(dǎo)致不同編譯器產(chǎn)生不同的運行結(jié)果賦值運算符下面兩個語句是等價的i=i+2;i+=2;+、-、*、/、%、<<、>>、&、^、|運算符都可以按此
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025大學(xué)食堂承包合同范本
- 工業(yè)生產(chǎn)車間鋼結(jié)構(gòu)樓梯施工協(xié)議
- 企業(yè)國際化發(fā)展戰(zhàn)
- 住宅小區(qū)批蕩施工合同
- 餐飲業(yè)授權(quán)經(jīng)營的管理辦法
- 投標(biāo)聯(lián)合體合規(guī)協(xié)議
- 會計審計合同管理規(guī)則
- 零售連鎖公司廣告牌安裝施工合同
- 醫(yī)療技術(shù)合作保險
- 2024年特種用途樹木研發(fā)與銷售合同范本3篇
- 浙江大學(xué)醫(yī)學(xué)院附屬兒童醫(yī)院招聘人員真題
- 2024年江蘇省蘇州市中考數(shù)學(xué)試卷含答案
- 軟件測試匯報
- 吉林省長春市第一〇八學(xué)校2024-2025學(xué)年七年級上學(xué)期期中歷史試題
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項考試題庫
- 初中《孫中山誕辰紀(jì)念日》主題班會
- 5.5 跨學(xué)科實踐:制作望遠(yuǎn)鏡教學(xué)設(shè)計八年級物理上冊(人教版2024)
- 屠呦呦課件教學(xué)課件
- 阿斯伯格綜合癥自測題匯博教育員工自測題含答案
- 護(hù)理肝癌的疑難病例討論
- 天津市2023-2024學(xué)年七年級上學(xué)期語文期末試卷(含答案)
評論
0/150
提交評論