基本數據類型、運算符、表達式_第1頁
基本數據類型、運算符、表達式_第2頁
基本數據類型、運算符、表達式_第3頁
基本數據類型、運算符、表達式_第4頁
基本數據類型、運算符、表達式_第5頁
已閱讀5頁,還剩94頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基本數據類型、運算符、表達式本章目標理解變量和常量的含義掌握符號常量的用法掌握數據類型int、char、float和double的分類和使用,理解轉義字符的含義掌握變量的命名和使用掌握算術、賦值、逗號等運算符的用法掌握表達式的概念(一)基本數據類型第一組: 圓周率 :3.14 重力加速度 :9.8 分鐘/小時 :60第二組: 小孩每年的重量 :weight 成都每天的溫度 :temperature 本門課程的成績 :score現實中的數據不發(fā)生變化會發(fā)生變化常量常量1、常量是用來表示在程序中保持不變的數據,分為直接常量(3.14)和符號常量(PI)2、符號常量的優(yōu)點:可以增強代碼可讀性可以使修改更容易可以更可靠地進行修改增強代碼可讀性inti=1;//12表示一年12個月;if(i<=12)#defineMONTH_OF_YEAR12inti=1;if(i<=MONTH_OF_YEAR)#definePI3.14//圓周率πvoidmain(void){ intr1,r2,r3,height3; floatarea1,area2,vol3; area1=PI*r1*r1; area2=PI*r2*r2; vol3=PI*r3*r3*height3;}常量的使用示例符號常量預處理后的效果voidmain(void){ intr1,r2,r3,height3; floatarea1,area2,vol3; area1=3.14*r1*r1;…… area2=3.14*r2*r2;…… vol3=3.14*r3*r3*height3;}要求提高計算精度voidmain(void){ intr1,r2,r3,height3; floatarea1,area2,vol3; area1=3.1415*r1*r1;…… area2=3.1415*r2*r2;…… vol3=3.1415*r3*r3*height3;}使修改更容易#definePI3.1415voidmain(void){ intr1,r2,r3,height3; floatarea1,area2,vol3; area1=PI*r1*r1; …… area2=PI*r2*r2; …… vol3=PI*r3*r3*height3;}常量使用小結使用規(guī)則避免出現常數和常字符串在需要時可以使用常數“0”或“1”把常數和常字符串放在頭文件中,例如:const.h文件使用方法

#definePI 3.14 #defineMONTH_OF_YEAR12命名注意事項全部大寫以區(qū)別變量用常量所代表的實際意義命名符號常量變量變量是用來表示在程序中可以發(fā)生變化的數據常量和變量都是具有類型的整型、浮點型、字符型位、字節(jié)、字1、字(word)

字是計算機進行數據處理和運算的單位,現在使用的微機的字由4個字節(jié)組成2、字節(jié)(byte)

字節(jié)是存儲空間的基本計量單位。計算機中以字節(jié)為單位存儲和解釋信息,規(guī)定一個字節(jié)由八個二進制位構成即1byte=8bit3、位(bit)

音譯為“比特”,表示二進制位。位是計算機內部數據儲存的最小單位,一個二進制位只可以表示0和1兩種狀態(tài)

字節(jié)數量:1K、1M、1G、1T1byte(B)=8bits(b)千字節(jié):1KB=2^10bytes=1,024bytes兆字節(jié):1MB=2^20bytes=1,048,576bytes千兆字節(jié):1GB=2^30bytes=1,073,741,824bytes吉字節(jié):1TB=2^40bytes=1,099,511,627,776bytes常見數據-231,…,-3,-2,-1,0,1,2,3,…,231-1-12.50,3.14,9.8,123456789.123456‘A’,‘B’,…,‘X’,‘Y’,‘Z’‘a’,‘b’,…,‘x’,‘y’,‘z’‘0’,‘1’,‘2’,‘3’,…,‘9’基本數據類型intshortintlongintchar非數值型數值型基本數據類型doublefloat整型非整型(實型)整型類型--[unsigned]short,int,long整型常量的三種表示方式十進制整常數

十進制整常數沒有前綴。其數碼為0~9。

十六進制整常數

十六進制整常數的前綴為0X或0x。其數碼取值為0~9,A~F或a~f。八進制整常數(一般推薦不使用)八進制整常數必須以數字0開頭,即以0作為八進制數的前綴。數碼取值為0~7。八進制數通常是無符號數。注:十六進制前綴0x和八進制前綴0都是以數字0(不是字母O)開始有符號整型分類名稱關鍵字縮寫說明符位數(8位為一個字節(jié))范圍整型intint16或32-215至+215-1或-231至231-1短整型shortintshort16-215至+215-1長整型longintlong32-231至231-1無符號整型分類名稱關鍵字縮寫說明符位數范圍無符號整型unsignedintunsigned16或320至216-1或0至232-1無符號短整型unsignedshortintunsignedshort160至216-1無符號長整型unsignedlongintunsignedlong320至232-1int與CPU的字長相同,在32位PC機上一般都是(除TurboC)都是32位,在16位嵌入式CPU上是16位(在使用開發(fā)工具時驗證),long型都是32位一般說來,在表示硬件端口地址時,常用unsignedlong,因為地址通常用32位來表示,同時因為地址常用十六進制表示,最高位常為1,使用unsigned可避免理解為負數。 例如:io_address=0x300000L;(最后的L表示該地址為4個字節(jié))整型數據前綴和后綴十六進制整型常數的前綴為0X或0x八進制整型常數的前綴為0長整型常數后綴為“L”或“l(fā)”無符號整型常數的后綴為“U”或“u”前綴,后綴可同時使用以表示各種類型的數據例如:0xA5LU表示十六進制無符號長整型數A5,其十進制為165,其長度為4個字節(jié)整型數據在計算機內存中的存放(補碼方式)shorta=10;0000000000001010shortb=-10;1111111111110110數據在內存中的存儲方式演示實型(浮點型)類型 –float,double實型常量 實型也稱為浮點型。在C語言中,實數只采用十進制。實型常量不分單、雙精度,都按雙精度double型處理。它有二種形式:1.十進制數形式

由數碼0~9和小數點組成。(12.34)2.指數形式

由十進制數,加階碼標志“e”或“E”以及階碼(只能為整數,可以帶符號)組成。

(1.234e+001)實型變量實型變量分為兩類單精度型:float雙精度型:double名稱表示位數總有效數字(整數和小數)數值范圍單精度float328-3.4x10-38至3.4x1038雙精度double6416-1.7x10-308至1.7x10308浮點數使用注意事項:1、不要在數量級相差太大的數之間進行加減運算floatrate=12345678.1;floatadd=0.1;printf("rate=%f\n",rate+add);floatrate=12345678.1;floatfee=12345678.2;

if(rate<fee)printf("rate<fee\n");elseif(rate>fee)printf("rate>fee\n");elseprintf("rate=fee\n");2、避免相等比較(使用下面的方法進行誤差比較)#defineTRUE(1==1)#defineFALSE(1==0)#defineDiff0.00001

intEquals(doubleTerml,doubleTerm2){if(fabs(Terml-Term2)<Diff) returnTRUE;elsereturnFALSE;}問題如果float型數據的總有效位為8,那么如何表示它的最小值(-3.4x10-38)和最大值(3.4x1038)在需要直觀表示的時候用小數方式,在超出小數表示范圍時用指數方式表示。字符型 --[unsigned]char字符常量字符常量是用單引號括起來的一個字符。例如‘a’,‘b’,‘=’,‘+’,‘?’都是合法字符常量。字符常量有以下特點:

1.字符常量只能單個字符用單引號括起來,不能用雙引號(雙引號表示字符串)。

2.字符在內存中是按ASCII碼保存的,因此與0~255之間的整數是等效的。因此數字被定義為字符型之后依然能參與數值運算,只是其值為對應的ASCII碼。3.特殊字符用轉義字符表示字符型參與數值運算#include<stdio.h>intmain(intargc,char*argv[]){inta=100; charch='1'; printf("%d+%d=%d\n",a,ch,a+ch); getchar();}運行結果為:100+49=149常用字符數字和字母0~9:0x30~0x39a~z:97~122A~Z:65~90(大小寫字母相差32)不能作為文件和目錄名的字符和判斷代碼‘\\’,‘/’,‘:’,‘*’,‘?’,‘\“’,‘<’,‘>’,‘|’九個字符intmain(intargc,char*argv[]){ inti,j; charchInvalid[9]={'\\','/',':','*','?','\"','<','>','|'};

charstr[255]={0};

printf("請輸入要文件路徑:\n"); gets(str); for(i=0;i<9;i++) { for(j=0;j<strlen(str);j++) { if(chInvalid[i]==str[j]) { printf("包含無效字符:%c\n",chInvalid[i]); break; } } } fflush(stdin); getchar();}轉義字符轉義序列名稱描述\\反斜線產生一條反斜線。\"雙引號產生一個雙引號。\'單引號產生一個單引號。\r回車將光標移到當前行的第一格。\0空產生一個空字符。\n換行將光標移到下一行的第一格。\a警告產生一則警告。\b退格將光標回退一格。\f換頁將光標移到下一頁的第一格。\t水平制表將光標移到下一個水平制表位置。\v垂直制表將光標移到下一個垂直制表位置。請寫出下列程序片段的運行結果:

printf("\n");

printf(“\\n

表示換行\(zhòng)n");

printf("xi\'an\n");

printf("\"hello\"\n");printf("1.\n");printf("2.\\n表示換行\(zhòng)n");printf("3.xi\'an\n");printf("4.\"hello\"\n");注:\\n從左到右組合。字符變量字符變量的類型說明符是char。字符變量的取值是字符常量,即單個字符。每個字符變量被分配一個字節(jié)的內存空間。字符值是以ASCII碼的形式存放在變量的內存單元之中的。因此也可以把它們看成是整型量(0~255)。變量命名及使用變量的基礎知識變量的名稱用來表示一個數據實體的助記符變量的類型int,double,char等變量的值指定時刻的狀態(tài)變量的地址數據都是存放在存儲器中的為了正確地訪問這些內存單元,必須為每個內存單元編上號內存單元的編號也叫做地址變量的值就是該地址位置中的內容作用域和存儲類型局部、全局和static,extern等變量的特點變量的特點必須指定確定的數據類型在內存中占用存儲空間不同類型的變量占用的存儲空間不同所占用的內存空間有一個編號,俗稱“地址”變量需要先定義再使用變量與常量的關系變量初始化時常量的類型與變量的類型兼容在任意指定時刻,變量的值是確定的,即是常量(在進行程序調試時可以查看變量的值)變量命名在C語言中,變量命名需要遵循一定的規(guī)則:變量名可以由字母(小寫a~z,大寫A~Z)、數字(0~9)和_(下劃線)組合而成,不能出現其他字符變量名必須以字母或

_(下劃線)開頭C語言中的某些詞(例如int

和for等)稱為保留字(關鍵字),具有特殊意義,不能用作變量名C語言的所有標示符區(qū)分大小寫,因此變量price與變量Price是兩個不同的變量,應該避免僅用大小寫的區(qū)別來命名兩個變量命名注意事項變量名是否準確地描述了變量所代表的實體,即名字是否說明了實體是“什么”變量名稱長度為8到20個字母名稱代表的實體恰當的名稱不恰當的名稱火車速度 TrainVelocityVELT,V,TV,X,X1今天日期CurrentDateCD,Current,C,X每頁行數LinesPerPageLPP,Lines,X,X1注:所有使用的標識符都遵循同樣的要求避免如下這些常見的命名錯誤:·易引起誤會的名稱·含義相似的名稱·僅有一或兩個字母不同的名稱 ·使用數字的名稱·對單詞作改寫以使其比較短的名稱·英語中常拼寫錯的名稱·標準庫子程序或已定義的變量名·完全是隨意的名稱·含有難以區(qū)分字母的名稱難以區(qū)分的字符有:"1"和"l""1"和"I""0"和"O"、"o""5"和"S""6"和"G"變量名中的反義詞add/remove begin/end start/stopinsert/delete first/last next/previouslock/unlock min/max get/releaseold/new open/close show/hidesource/destination source/targetcreate/destroyincrement/decrementput/get up/down變量定義位置規(guī)則在有些開發(fā)工具中,要求在函數中定義的所有的變量都必須放在可執(zhí)行語句之前。因此,當你確認變量的定義格式是正確的,但是編譯器報錯,則可能是違背了此規(guī)則。intmain(intargc,char*argv[]){ inta=1; printf("a=%d\n",a); intc; printf("c=%d",c); }例如:在CVI9.0開發(fā)工具中,編譯器提示兩個錯誤:1.Unrecognizedstatement.2.Undeclaredidentifier'c'.聲明變量變量聲明數據類型變量名; //intsum;定義變量后初始化變量名=變量值; //sum=0;定義變量時初始化數據類型變量名=變量值; //intsum=0;變量的名稱和值#include<stdio.h>voidmain(void){ intadd1,add2,sum; scanf("%d%d",&add1,&add2); sum=add1+add2; printf("%d+%d=%d",add1,add2,sum);}typedef(定義數據類型別名)typedef的使用如果在程序中多次用到int定義商品的價格,如果價格需要修改為double類型,則最好使用typedef。typedefint PRICE;typedefdouble PRICE;intprice1;intprice2;intprice13;intprice14;doubleprice1;doubleprice2;doubleprice13;doubleprice14;typedefintPRICE;PRICEprice1;PRICEprice2;PRICEprice3;PRICEprice4;typedefdoublePRICE;PRICEprice1;PRICEprice2;PRICEprice3;PRICEprice4;基本數據常用別名定義typedef unsignedlong UInt32;typedef signedlong Int32;typedef unsignedshortUInt16;typedef signedshort Int16;typedef unsignedcharUInt8;typedef signedchar Int8;typedef int BOOL;不同系統之間的數據傳輸時數據結構的設計例如:32位PC機和16位單片機之間typedef

struct

{

unsigned

short

x;

unsigned

int

y;

}recPoint;typedef

unsigned

short

UInt16;typedefunsigned

int

UInt32;

typedef

struct

{

UInt16

x;

UInt32

y;

}recPoint;這樣定義的數據結構非常具有通用性,如果上述32平臺上的數據發(fā)送到16位平臺上接收,在16位平臺上僅僅需要修改UInt16、UInt32的定義:

typdef

unsigned

int

UInt16;

typdef

unsigned

long

UInt32;數據類型的轉換1、在不同的基本類型的數據之間進行混合運算時,顯式進行不同類型之間的數據轉換,禁止自動類型轉換。例如: floatf=12.34; inti=(int)f;//i=12,f任然是float型2、避免不同類型的數據之間進行比較小結常量是在程序中不能被更改的值,一般用符號常量表示;而變量在程序中可以被更改的,通過變量可以引用存儲在內存中的數據變量的命名需要謹慎考慮基本數據類型包括整型、實型和字符型整型分為短整型、整型、長整型,每種整型又可分為有符號型和無符號型單精度浮點型、雙精度浮點型字符相當于0~255之間的整數,可以整數或字符格式輸出,而轉義字符用于特殊用途(二)運算符目標掌握算術運算符的用法掌握賦值運算符的用法掌握逗號運算符的用法掌握sizeof運算符的使用理解表達式的含義運算符和表達式表達式由操作數和運算符的組合而成表達式中的操作數可以是變量、常量或者子表達式運算符的主要類型有:算術運算符賦值運算符逗號運算符關系運算符邏輯運算符條件運算符位運算符算術運算符加法運算符“+”減法運算符“-”乘法運算符“*”除法運算符“/”求余運算符(模運算符)“%”自增運算符“++”自減運算符“--”前五個為二元運算符,后兩個為一元運算符求兩個數的商#include<stdio.h>intmain(intargc,char*argv[]){ intpara1,para2,result;

scanf("%d%d",¶1,¶2);

result=para1/para2;

return0;}運行結果#include<stdio.h>intmain(intargc,char*argv[]){ intfirst,second,result; scanf("%d%d",&first,&second);

if(0!=second) result=first/second;

return0;}采取預防被"0"除的措施算術運算符注意事項除法運算符“/”要求分母不能為0整型數據和浮點型數據除法運算符相同,都是”/”C語言中不區(qū)分整型和實型除法,如果操作數都是整型,則需要注意如下問題:7/10=0,而7.0/10=0.7;自定義實型除法運算符div#definediv(a,b)(double)(a)/(b)求余運算符求余運算符(模運算符)“%”要求分母不能為0要求參與運算的數據均為整型如果需要在輸出結果中得到”%”,則表示方式為:”%%”,例如:printf("%d%%\n",30);語句的輸出為:30%。++、--運算符使用禁忌當一個變量出現在同一個函數的多個參數中時當一個變量出現在一個表達式里時i++與++i、i--與--i的區(qū)別如果i出現在++和--前面,則是先使用i的值,再增加i的值如果i出現在++和--后面,則是先增加i的值,再使用i的值i++;與++i;語句等效;i--;與

--i;語句等效。賦值運算符賦值運算符ok=’y’;sum=a+y;ScreenWidth =1024;變量

表達式;=1、最簡單的運算符左值:等號左邊的部分稱為左值,只能是變量;右值:等號右邊的部分稱為右值,除了給一個直接的常量值以外,可以是一個變量,還可以通過計算獲得。復合賦值運算符運算符表達式計算結果(假設a=5)+=a+=5a=a+510-=a-=5a=a-50*=a*=5a=a*525/=a/=5a=a/51%=a%=5a=a%50強烈建議不使用,但能夠理解賦值語句最容易出現的錯誤請寫出下列語句的執(zhí)行結果:#defineDECEMBER12int month=11;if(month=DECEMBER)printf(“Itisdecember.”)elseprintf(“Itisnotdecember.”)賦值語句的錯誤用法#defineDECEMBER12intmonth=11;if(DECEMBER==month)printf(“Itisdecember.”)elseprintf(“Itisnotdecember.”)等于運算符的推薦用法#defineDECEMBER12intmonth=11;if(DECEMBER=month)printf(“Itisdecember.”)elseprintf(“Itisnotdecember.”)賦值運算符的用法語法錯誤逗號運算符通常是要分別求逗號表達式內各表達式的值,并不一定要求整個逗號表達式的值。并不是在所有出現逗號的地方都組成逗號表達式,如在變量說明中,函數參數表中逗號只是用作各變量之間的間隔符。

逗號運算符示例#include<stdio.h>voidmain(void){inta=1,b=2,c=3;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論