第3章-數據類型及其應用_第1頁
第3章-數據類型及其應用_第2頁
第3章-數據類型及其應用_第3頁
第3章-數據類型及其應用_第4頁
第3章-數據類型及其應用_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本章講授要點:介紹C語言的數據類型,常量與變量,運算符與表達式,數據的輸入和輸出等。重點:掌握數據類型及各種類型數據混合運算規(guī)則和數據的輸入和輸出等。第3章數據類型及其應用1第3章數據類型及其應用3.1常量3.2變量3.3運算符和表達式3.4數據的輸出3.5數據的輸入數據類型基本類型構造類型指針類型空類型void字符類型char

枚舉類型enum整型實型(浮點型)單精度型float雙精度型double數組結構體struct共用體union短整型short長整型

long整型int數據類型決定:1.數據占內存字節(jié)數2.數據取值范圍3.其上可進行的操作其值不可再分解!由一個或多個數據類型構造而成。是一種特殊而重要的數據類型。說明:數據類型所占字節(jié)數隨機器硬件不同而不同,上表以IBMPC機為例:基本數據類型longdouble128-1.2e-4932~1.2e4932標識符定義:用來標識變量、常量、函數等的字符序列。組成:只能由字母、數字、下劃線組成,且第一個字母必須是字母或下劃線;大小寫敏感;不能使用關鍵字。長度:最長32個字符。命名原則:見名知意;不宜混淆,

例如:l與I,o與0容易混淆。舉例:判斷下列標識符號合法性。sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b3.1常量定義:程序運行時其值不能改變的量(即常數)。分類:分類常量示例數值型常量整型常量-123,076,0x2a實型(浮點型)常量0.618,3.14e5字符型常量字符常量‘P’,‘2’轉義字符\n,\t字符串常量“Hello!”,“12345”符號常量#definePI3.141593.1常量

常量十進制八進制十六進制指數形式具有特定含義習慣上符號常量的標識符用大寫字母;變量標識符用小寫字母。三種形式:十進制整數:由數字0-9和正負號表示,例如:123,-456,0;八進制整數:由數字0開頭,后跟數字0-7表示,例如:0123,011;

十六進制整數:由0x開頭,后跟0-9,a-f,A-F表示,例如:0x123,0Xff。例:12與12L例:30000為int型65536為longint型整型常量根據其值所在范圍確定其數據類型,其中在整常量后加字母l或L,認為它是longint型常量。問題:0123=()100x123=()100Xff=()1083291255問題:0123=()100x123=()100Xff=()10★整型常量(整常數)3.1常量兩種形式:十進制數形式:(必須有小數點)例如:0.123,.123,123.0,0.0,123;指數形式:(e或E之前必須有數字;指數必須為整數)例如:12.3e3,123E2,1.23e4,e-5,1.2E-3.5。

實型常量的類型默認為double型,在實型常量后加字母f或F,認為它是float型。+.314159

1符號位4個字節(jié)指數實型數據在內存中按指數形式存放,例如:3.141593.1常量★實型常量(實數或浮點數)定義:用單引號括起來的單個普通字符或轉義字符。字符常量的值:該字符的ASCII碼值。<轉義字符及其含義:轉義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉義字符含義換行垂直制表回車響鈴單引號3位8進制數代表的字符水平制表退格換頁反斜線雙引號2位16進制數代表的字符例如:‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’例如:‘A’-------’\101’-------’\x41’--------65例如:‘A’——65‘a’——97‘0’——48‘\n’——10例如:‘a’‘A’‘?’‘\n’‘\101’轉義字符:反斜線后面跟一個字符或一個代碼值表示。轉義字符舉例:#include<stdio.h>voidmain(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運行結果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’3.1常量★字符常量aaa字符常量與字符串常量不同定義:用雙引號(“”)括起來的字符序列。存儲:每個字符串尾自動加一個‘\0’作為字符串結束標志。hello\0例如:字符串“hello”在內存中a

a\0‘a’“a”例如:空串“”\0舉例:

charch;ch=“A”;舉例:

charch;ch=‘A’;3.1常量★字符串常量兩點說明:

1)一般用大寫字母;2)是宏定義預處理命令,不是C語句。例如:#definePI3.14159符號常量:用標識符代表常量。定義格式:#define符號常量常量[實例3-3]符號常量的使用。#definePI3.14159voidmain(){floats,r;r=10;s=PI*r*r;printf(“s=%f\n”,s);}運行結果:s=314.1589973.1常量編譯程序根據變量定義為其分配指定字節(jié)的內存單元?!?..地址inta=1,b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址…...內存1-3隨機數定義:其值可以改變的量。三要素:變量名、變量類型和變量值。變量定義的一般格式:

數據類型變量1[,變量2,…,變量n];變量初始化:定義時賦初值。3.2變量占字節(jié)數隨機器不同而不同,一般占一個機器字。short≤int≤long;可用sizeof(類型標識符)進行度量。舉例:floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/舉例:a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/沒有字符串變量,用字符數組存放!3.2變量★整型變量★實型變量float:占4字節(jié),提供6-7位有效數字;double:占8字節(jié),提供15-16位有效數字;longdouble:占16字節(jié),提供18-19位有效數字?!镒址妥兞孔址兞看娣抛址鸄SCII碼;char與int數據間可進行算術運算。舉例:

#definePRICE12.5#include<stdio.h>voidmain(){intnum=3;floattotal;charch1,ch2=‘D’;total=num*PRICE;ch1=ch2-‘A’+‘a’;printf(“total=%f,ch1=%c\n”,total,ch1);}宏定義變量定義輸出結果運行結果:total=37.500000,ch1=d3.2變量★指針的基本概念

內存單元的編號叫做地址,通常也把這個地址稱為指針。在C語言中,允許用一個變量來存放指針,這種變量稱為指針變量。

3.2變量變量的地址--指針★指針變量的定義

類型說明符*指針變量名;舉例:int*p1;//表示p1是一個指針變量,它的值是某個整型變量的地址。變量的指針、變量值與指針變量:可見:上圖中整型變量a/b/c的指針分別指向內存地址2001/2003/2005;變量值分別為5/0/8;指針變量分別為p1/p2/p3。指針即地址!運算符算術運算符:(+-*/%++--)關系運算符:(<<===>>=!=)邏輯運算符:(!&&||)位運算符:(<<>>~|^&)賦值運算符:(=及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(*&)求字節(jié)數:(sizeof)強制類型轉換:(類型)分量運算符:(.->)下標運算符:([])其它:(()-)3.3運算符和表達式加/減/乘/除/取余/自增/自減小于/小于等于/等于/大于/大于等于/不等于邏輯非/邏輯與/邏輯或左移/右移/按位取反/按位或/按位異或/按位與指針/取地址兩種結構成員訪問括號/負號運算符功能運算符與運算量的關系要求運算量的個數要求運算量的類型運算符優(yōu)先級別結合方向結果的類型學習運算符應注意:3.3運算符和表達式例如:5/2=

-5/2.0=例如:5%2=-5%2=1%10=5%1=5.5%22-2.51-110()3.3運算符和表達式★基本算術運算符:+-*/%結合方向:從左向右優(yōu)先級:-

---->*

/%----->+-說明:“-”可為單目運算符時,采用右結合性;兩整數相除,結果為整數;求余數要求兩側均為整型數據。例如:j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=43.3運算符和表達式★自增、自減運算符:++--作用:使變量值加1或減1i=i+1;j=ii=i-1;j=ij=i;i=i+1j=i;i=i-1學會拆分!種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值;后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)例如:-i++i=3;printf(“%d”,-i++);3.3運算符和表達式★自增、自減運算符:++--說明:++--不能用于常量和表達式,例如:5++,(a+b)++++--結合方向:

自右向左優(yōu)先級:-++-------->*/%----->+--i++-(i++)-3例如:j+++k;(j++)+k;j+k;j=j+1;簡單賦值運算符符號:=格式:變量標識符=表達式作用:將一個數據(常量或表達式)賦給一個變量。復合賦值運算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2exp1=exp1opexp2x*=y+8x=x*(y+8)x%=3x=x%3例如:a=3;d=func();c=d+2;3.3運算符和表達式★賦值運算符和表達式a+=3a=a+3例如:3=x-2*y;a+b=3;例如:inti;i=2.56;//i=2例如:a=b=c=5;a=(b=5);a=5+(c=6);a=(b=4)+(c=6);a=(b=10)/(c=2);//表達式值為5,a,b,c值為5//b=5,a=5//表達式值11,c=6,a=11//表達式值10,a=10,b=4,c=6//表達式值5,a=5,b=10,c=23.3運算符和表達式★賦值運算符和表達式賦值轉換規(guī)則:使賦值號右邊表達式值自動轉換成其左邊變量的類型。賦值表達式的值與變量值相等,且可嵌套!說明:結合方向:

自右向左;左側必須是變量,不能是常量或表達式例如:floatf;inti;i=10;f=i;//f=10.0例如:a=12;a+=a-=a*a;//a=-2643.3運算符和表達式★賦值運算符和表達式等價于a=a+(a=a-(a*a))a1=a*a;a2=a-a1;a=a2;a3=a+a2;a=a3;//a1=144;a2=12-144=-132;a=-132;a3=-132+(-132)=-264;a=-264形式:表達式1,表達式2,……表達式n結合性:從左向右逗號表達式的值:等于表達式n的值用途:常用于循環(huán)for語句中//a=15,表達式值60//a=15,表達式值20//賦值表達式,表達式值18,x=18//逗號表達式,表達式值18,x=3//1,2,3//3,2,33.3運算符和表達式★逗號運算符和表達式例如:a=3*5,a*4a=3*5,a*4,a+5例如:x=(a=3,6*3)x=a=3,6*a例如:a=1;b=2;c=3;printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,b,c),b,c);種類:<<===>=>!=結合方向:自左向右優(yōu)先級別:<<=>>===!=優(yōu)先級(高)優(yōu)先級(低)3.3運算符和表達式★關系運算符和表達式例如:若a=0;b=0.5;x=0.3;則a<=x<=b的值為0例如:5>2>7>8在C中是允許的,值為0例如:inti=1,j=7,a;a=i+(j%4!=0);7%4=3;3!=0值為1;a=1+1=2例如:‘a’>097大于0,結果為1‘A’>10065大于100,結果為0102例如:inta=0,b=1;

if(a=b)

printf(“aequaltob”);elseprintf(“anotequaltob”);例如:1.0/3.0*3.0==1.0可改寫為:fabs(1.0/3.0*3.0-1.0)<1e-63.3運算符和表達式★關系運算符和表達式應避免對實數作相等或不等的判斷!注意區(qū)分“=”與“==”!a==bab!a!ba&&ba||b真假真假假假真真種類:!&&||邏輯運算真值表C語言中,運算量:

0表示“假”,非0表示“真”。

運算結果:

0表示“假”,1表示“真”。真假假假假假真真假假真真真假真真3.3運算符和表達式★邏輯運算符和表達式請牢記!!(2)&&(11)||(12)高低例如:a<=x&&x<=ba>b&&x>ya==b||x==y!a||a>b優(yōu)先級:結合方向:!:從右向左&&:從左向右||:從左向右//(a<=x)&&(x<=b)

//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)3.3運算符和表達式★邏輯運算符和表達式例如:a&&b&&c//只在a為真時,才判別b的值;即a為假時,值為假//只在a、b都為真時,才判別c的值。例如:a||b||c//只在a為假時,才判別b的值;即a為真時,值為真//只在a、b都為假時,才判別c的值。例如:a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)//結果m=0,n=13.3運算符和表達式★邏輯運算符和表達式短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。先計算m值,由于為假(0),則不再繼續(xù)計算下去!一般形式:expr1?expr2:expr3功能:相當于條件語句,但不能取代一般if語句執(zhí)行過程:例如:x?‘a’:‘b’//x=0,表達式值為‘b’;x?0,表達式值為‘a’x>y?1:1.5//x>y,值為1.0;x<y,值為1.53.3運算符和表達式★條件運算符和表達式不同類型數據間的轉換隱式轉換——運算轉換規(guī)則:不同類型數據運算時先自動轉換成同一類型!強制轉換——一般形式:(類型名)(表達式)例如:(int)(x+y)(int)x+y(double)(3/2)說明:強制轉換得到所需類型的中間變量,原變量類型不變。例如:#include<stdio.h>voidmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結果:x=3.600000,i=3運算轉換------不同類型數據混合運算時;賦值轉換------把一個值賦給與其類型不同的變量時;輸出轉換------輸出時轉換成指定的輸出格式;函數調用轉換------實參與形參類型不一致

溫馨提示

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

評論

0/150

提交評論