數據類型和運算課件_第1頁
數據類型和運算課件_第2頁
數據類型和運算課件_第3頁
數據類型和運算課件_第4頁
數據類型和運算課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章

數據類型

運算符與表達式第二章

數據類型

運算符與表達式2.1C語言數據類型數據類型基本類型指針型構造類型空類型實型整型字符型枚舉型數組共用體結構體C語言數據常量變量:程序運行中,值不能被改變的量:程序運行中,值可以被改變的量2.1C語言數據類型數據類型基本類型指針型構造類型空類型實1整型(1)整型常量(整常數)十進制(0-9):123,0,-456八進制(0-7):0開頭,如012,-011十六進制(0-9,A-F):0x(0X)開頭,如0x123,-0x12,0xff示例printf(“%d”,012+0x12);輸出結果=281整型(1)整型常量(整常數)十進制(0-9):123,1整型(2)整型變量基本型int

示例:inta;a=100;注意:int類型取值范圍:-32768~+32767inta=100;等價于1整型(2)整型變量基本型int示例:注意:int1整型(2)其他整型基本型int

(數據范圍:-32768~+32767)短整型shortint

short

(數據范圍:-32768~+32767)長整型longint或

long

(數據范圍:-231~231-1)示例:shorta=100;longm=12L;對于長整型要求在數據后面加字母后綴“L”或“l(fā)”。1整型(2)其他整型基本型int(數據范圍:-31整型(2)無符號整型無符號整型unsignedint(數據范圍:0~65535)無符號短整型unsignedshort(數據范圍:0~65535)無符號長整型unsignedlong(數據范圍:0~232-1)示例:unsignedinta=100;1整型(2)無符號整型無符號整型unsignedin1整型(2)匯總基本型int(數據范圍:-32768~+32767)短整型shortint

或者short(數據范圍:-32768~+32767)長整型longint

或者long(數據范圍:-231~231-1)無符號型無符號整型unsignedint(數據范圍:0~65535)無符號短整型unsignedshort(數據范圍:0~65535)無符號長整型unsignedlong(數據范圍:0~232-1)1整型(2)匯總基本型int(數據范圍:-327整型示例1#include"stdio.h"main(){

inta,b,u;intc,d;a=12;b=-24;u=010;c=a+u;d=b+u;printf("a+u=%d,b+u=%d

\n",

c,

d);}%d:以十進制形式輸出整數整型示例1#include"stdio.h"%d:以十進整型示例2#include"stdio.h"main(){

inta,b,u;

longc,d;a=12;b=-24;u=010;c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n",c,d);}將上例intc,d;改為longc,d;注意:對long型數據應當用%ld

格式輸出!長整數最好在該整數后面字母后綴l或L,如a=12L或12l整型示例2#include"stdio.h"將上例in2實型數據(1)實型常量(浮點數)小數形式:12.3,0.0,.12,12.,-.12,3.14f

必須有小數點指數形式:123e3(表示123×103),45.3E0,0.45e-2(注意:e前面必須有數字,后面指數必須為整數)以下均是錯誤的指數形式:e3,2e3.5,e,.e3。2實型數據(1)實型常量(浮點數)小數形式:12.3,02實型數據(2)實型變量單精度float雙精度

double:7個有效數字,-3.4×10-38~3.4×1038:15-16個有效數字,-1.7×10-308~1.7×10308示例:floatx=123.4e3;doulbepi=3.1415926;2實型數據(2)實型變量單精度float雙精度doub實型示例1#include"stdio.h"main(){floatx=123.4e3;doulbepi=3.1415926;printf(“x=%f,pi=%f”,x,pi);}%f用于輸出float和double實數,但輸出的小數位固定為6位(精度問題)如何解決小數精度?實型示例1#include"stdio.h"%f用于輸出實型示例2-輸出精度控制#include"stdio.h"main(){floatf;f=-123.456;printf(“%f,%10.2f”,f,f);}運行結果:-123.456001,┗┛┗┛┗┛-123.46表示數據總寬度(右對齊)(包括小數點,符號位)表示小數位數(輸出的數據會四舍五入)實型示例2-輸出精度控制#include"stdio.h"實型示例31、輸出結果是___________。floata=3.1415;printf(“|%6.0f|\n”,a);2、輸出結果是____________。floata=57.666;printf(“*%010.2f*|\n”,a);|┗┛┗┛┗┛┗┛┗┛3|*0000057.67*實型示例31、輸出結果是___________。2、輸出結果實型示例4√#include"stdio.h"main(){

intx=2.5555555;/*7個5*/floaty=x;floatz=2.5555555;/*7個5*/printf(“%d,%f,%f”,x,y,z);}輸出結果:2,2.000000,2.555556整型變量←實型數據,整型變量只接收整數部分,小數部分舍棄。%f輸出實數時,小數為6位,且四舍五入。實型變量←整型數據,數值不變,但以浮點數存儲。實型示例4√#include"stdio.h"輸出結果:整編程練習1、已知矩形長length和寬width,求矩形周長和面積。2、已知圓半徑r,求圓周長和面積。3、求二次方程的根。如:x2+3x+2=04、已知三角形3邊,求三角形周長和面積。5、已知華氏溫度F,輸出攝氏溫度(保留2位小數)公式C=5/9(F-32)。6、輸入一個小寫字母,輸出對應的大寫字母。編程練習1、已知矩形長length和寬width,求矩形周長3字符型數據(1)字符常量一般字符:單引號括起的一個字符,

如’a’,’A’,’9’?。。≈匾f明:字符數據在計算機內是以8個二進制位表示的。1個字節(jié)十進制值為9701100001例如:’a’因此可以認為:'a'=973字符型數據(1)字符常量一般字符:單引號括起的一個字符,產生問題:怎樣知道字符的8個二進制位或十進制值呢?例如:'b'=?,

'A'=?使用ASCII碼表產生問題:使用ASCII碼表ASCII碼表結論1:小寫字母比對應的大寫字母大32。'a'='A'+32'Z'='z'-32ASCII碼表結論1:思考問題:字符'9'=數值9嗎?結論2:數字字符不等于對應的數字值。'9'≠9實際上'9'>9結論3:兩個數字字符之差等于對應的數字值之差。'3'-'0'=3'9'-'3'=6思考問題:結論2:3字符型數據(2)字符變量字符變量用于存放一個字符常量。charch;ch='a';‘a’的ASCII碼值為97ch97可直接用ch=97;因此字符型數據可看作是一種更短的整形數據(1個字節(jié),取值范圍[0,255]).那么對于整形數據的一些運算也可用在字符數據上,如ch+1,ch-32等3字符型數據(2)字符變量字符變量用于存放一個字符常量。c字符型示例1#include"stdio.h"main(){

charch1,ch2;ch1='a';ch2=66;ch1=ch1-32;ch2=ch2+32;printf("%c,%c\n",ch1,ch2);}運行結果:A,b

字符數據可用%c輸出字符型示例1#include"stdio.h"運行結果:字字符型示例2#include"stdio.h"main(){

charch1,ch2;ch1=‘a’;ch2=ch1+1;printf("%c,%d\n",ch1,ch2);}字符數據可用%c輸出,也可用%d輸出:以%c輸出時,將輸出其字符;以%d輸出時,將輸出對應的ASCII碼值。運行結果:a,98字符型示例2#include"stdio.h"字符數據可用字符型示例3#include"stdio.h"main(){

chara='a';printf("%d,%c\n",a+'2'-'0',a-'0'+'3');}運行結果:99,d

字符型示例3#include"stdio.h"運行結果:特殊字符轉義字符

以\

開頭(\

稱為轉義符),如’\n’,’\a’等。兩類特殊轉義字符\ddd-1到3位8進制數所代表的字符

(注意ddd并不表示的三個一樣的數據)\xhh-1到2位16進制數所代表的字符如:\101和\x41均表示’A’,

\12和\xa均表示\n,

\0表示空操作特殊字符轉義字符\ddd-1到3位8進制數所代表的字符3字符型數據(3)字符串常量雙引號括起的一個或一串字符,如"abc","123.456"輸出一個字符串方法:方法1:printf(”Howareyou!”);方法2:用%s輸出字符串

printf(”%s”,”Howoldareyou!”);不能將一個串直接賦給字符變量,如

charc;c=”Howoldareyou”;

×C語言中沒有專門的字符串變量,以后會講到使用字符型數組來存放字符串。不是實數123.4563字符型數據(3)字符串常量雙引號括起的一個或一串字符,如字符串的存儲例如:字符串"abc"在計算機中存儲形式為:‘a’‘b’‘c’‘\0’串的結束標記:'\0'‘\0’是ASCII碼值為0的字符(即空操作符)字符串的存儲例如:字符串"abc"‘a’‘b’‘c’‘\0’字符’a’與字符串”a”的區(qū)別在內存中,字符’a’是由一個字節(jié)來存儲的,且存儲的值為’a’的ASCII碼(97)。01100001字符串”a”是由兩個字節(jié)來存儲的,一個是’a’,另一個’\0’(即空操作符)作為串的結束標記。97’a’a1Byte\0”a”a2Byte實際字符’a’與字符串”a”的區(qū)別在內存中,字符’a’是由一個字注意求字符串長度時,'\0'是不計長度的: 如strlen("abc")=3如果問字符串在計算機中存儲時占幾個字節(jié)時這要統(tǒng)計'\0': "abc"要占4個字節(jié)。注意求字符串長度時,'\0'是不計長度的:特殊字符串空串””:長度為0的字符串,

strlen(””)=0??崭翊薄保阂粋€或多個空格

strlen(””)=1??沾倏崭翊厥庾址沾薄保洪L度為0的字符串,空串≠空格串一種特殊常量符號常量:由#define定義的常量#include"stdio.h"#definePI3.14159

/*PI是符號常量*/main(){intr;r=10;printf("LengthofCircleis:%f\n",2*PI*r);}在程序中不能再給它賦值一種特殊常量符號常量:由#define定義的常量#inclu2.2運算符和表達式1算術運算2賦值運算3逗號運算4求字節(jié)運算(求長度運算)5強制運算6關系運算和邏輯運算(放在分支講)2.2運算符和表達式1算術運算1算術運算(1)基本運算符

+-*/%(取余或模運算)注意:

%兩側必須為整型數據,如9%7=2,9.2%7×

整數運算結果為整數,如5/2=2√(不是2.5)

一旦有實數,則結果為實數,且是double型(雙精度);如5/2.0=2.5(double型);1.0*5/2=2.51算術運算(1)基本運算符1算術運算(2)自增自減運算符(單目運算)++--(使變量的值增1或減1)基本形式:

++i,--i(在使用i之前,先使i的值加1、減1)i++,i--(在使用i之后,使i的值加1、減1)注意:只有變量才能使用++和--,10++×,(x+3)--×

“自右向左”結合,如-i++相當于–(i++)

運算優(yōu)先級高于雙目算術運算,如a+++b,即(a++)+b1算術運算(2)自增自減運算符(單目運算)例題:假設a=2,則:(1)b=a++結果b=___,a=___;(2)b=++a結果b=___,a=___;(3)b=a--+1結果b=___,a=___;(4)b=--a+1結果b=___,a=___;(5)b=a+a++結果b=___,a=___;(6)b=a+++a結果b=___,a=___;233331214363RETURN例題:233331214363RETURN算術運算示例#include"stdio.h"main(){

inti=8;printf("%d,%d,%d\n",++i,--i,i--);}運行結果:7,6,8注意:TC中,printf()求值順序從右到左進行。算術運算示例#include"stdio.h"運行結果:注意2賦值運算算術自反賦值運算符+=-=*=/=%=a+=b;等價于a=a+b;a-=3;等價于a=a-3;x*=y+8;等價于x=x*(y+8);先算右邊2賦值運算算術自反賦值運算符+=-=*=賦值運算示例1

#include"stdio.h"main(){intx=10;x+=3+x%(-3);printf("%d",x);}運行結果:14賦值運算示例1#include"stdio.h"運行結果:賦值運算示例2

#include"stdio.h"main(){intx=12;x+=x-=x*x;printf("%d",x);}運行結果:-264RETURN賦值運算示例2#include"stdio.h"運行結果:3逗號運算(1)

用逗號將幾個表達式連接起來,一般形式: 表達式1,表達式2,…,表達式n

求解過程(注:逗號運算級別最低)

先求表達式1,再求表達式2,…直至表達式n;整個逗號表達式的值是表達式n的值。舉例說明:表達式a=3*5,a*4中,a=____,表達式值=____;表達式x=(a=3,6*a)中,x=____;表達式x=a=3,6*a中,x=____。1560183逗號運算級別最低RETURN3逗號運算(1)用逗號將幾個表達式連接起來,一般形式:4求字節(jié)運算兩種形式:

sizeof(變量名)→求變量的字節(jié)數

sizeof(類型名)→求數據類型的字節(jié)數注意:sizeof是運算符,不是函數調用!例如:

intx;則表達式sizeof(x)=____;表達式sizeof(float)=____。RETURN244求字節(jié)運算兩種形式:RETURN245強制運算一般形式:

(類型名)表達式→將表達式的值轉換為所需類型例如:(char)x;將x的值強換為字符型.(double)(a*b);將a*b的值轉換為double型.

k=int(a+b);改為:k=(int)(a+b);inta=2,b=5;(f

溫馨提示

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

評論

0/150

提交評論