C語言-數據的表示與運算課件_第1頁
C語言-數據的表示與運算課件_第2頁
C語言-數據的表示與運算課件_第3頁
C語言-數據的表示與運算課件_第4頁
C語言-數據的表示與運算課件_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章第二章本章要點數據的存儲及數據類型數據的表示——常量和變量數據的運算及其規(guī)則本章要點數據的存儲及數據類型2.1數據的存儲及數據類型以二進制形式存儲計算機存儲器的存儲單元按字節(jié)編址C語言針對不同類型的數據采用不同的存儲方式——具體體現在不同的“數據類型”上2.1數據的存儲及數據類型以二進制形式存儲C語言提供了以下一些數據類型:

數據類型構造類型指針類型空類型(無值類型)void枚舉類型enum數組類型結構體類型struct聯合體類型union基本類型整型int字符型char實型(浮點型)單精度實型float雙精度實型doubleC語言提供了以下一些數據類型:數據整數的存儲方式:

以十進制補碼形式存儲。一般整數占用的空間:TurboC2.0:2個字節(jié)的存儲單元

TurboC++3.0:2個字節(jié)的存儲單元VC++6.0:4個字節(jié)根據占用空間和數值范圍的不同細分為幾種類型:

基本整型int無符號的基本整型unsignedint短整型shortint無符號的短整型unsignedshortint長整型longint無符號的長整型unsignedlongint

整數的存儲方式:類型聲明符字節(jié)數取值范圍int2-32768~32767即-215~(215-1)short[int]2-32768~32767即-215~(215-1)long[int]4-2147483648~2147483647

即-231~(231-1)unsigned[int]20~65535即0~(216-1)unsignedshort20~65535即0~(216-1)unsignedlong40~4294967295即0~(232-1)以TurboC++3.0為例:類型聲明符字節(jié)數取值范圍int2-32768~32767實數的存儲形式:實數采用指數形式存儲,即浮點數。將實數轉化為標準化指數形式,分別存儲尾數部分和指數部分。

類型位數絕對值范圍有效數字float4字節(jié)10-38~10387Double8字節(jié)10-308~1030816longdouble16字節(jié)10-4932~10493219實數的存儲形式:類型位數單個字符的存儲方式:存儲字符的編碼;目前大多數計算機采用ASCII代碼;占用的空間:一個字節(jié)的存儲空間。例如:

字符’A’

為char類型,在內存中占1字節(jié),存儲的是其ASCII碼值65。單個字符的存儲方式:2.2程序中數據是如何表示的?常量、變量常量:

程序運行過程中,其值不能

被改變的量。常量也相應地區(qū)分為不同的類型:#include<stdio.h>voidmain(){ inti,x,s,avg; i=0; s=0;

do{ scanf("%d",&x); s=s+x; i=i+1;

}while(i<10);avg=s/10; printf("avg=%d\n",avg);}整型125,-100,0,037,0x38

默認為int,可以用后綴指

明類型:289L,32767L,

39u,39090u,65536Lu實型3.14,-3.7e9,.23e-3默認double類型,9.6f為float型字符型‘a’,‘b’,‘2’字符串“a”,“ab”,“1234”八進制十六進制2.2程序中數據是如何表示的?常量、變量#include#include<stdio.h>voidmain(){inta;a=32767+1;/*int+int*/printf("a=%d",a);}運行時顯示??-3276801111111

111111113276700000000

000000011-----------------------------------10000000

00000000-32768小心結果“溢出”!整型數據運算中應該注意的問題:請思考:longa;a=32767+1;a:-32768longa;a=32767L+1;a:3276800000000

00000000

01111111

1111111132767L00000000

00000000

00000000

000000011-----------------------------------------------------00000000

00000000

10000000

0000000032768#include<stdio.h>運行時顯示??-32(1)字符本質上是整數,既可以當作字符,也可以當作整數使用;

printf(“%c,%d,%c,%c”,’a’,’a’,’a’-32,97-32);運行時顯示??a,97,A,A字符型數據注意的問題:(2)有些特殊字符無法正常表示出來,需要使用轉義符“\”進行轉義。

換行符(ASCII碼值為10)表示為‘\n’,即把字母n轉義為換行符。如:inta=10,b=20;

printf(“a=%d\nb=%d\n”,a,b);(1)字符本質上是整數,既可以當作字符,也可以當作整數使用;轉義字符表示含義ASCII碼\\反斜杠字符“\”92\’單引號字符39\”雙引號字符34\n換行,將當前位置移到下一行開頭10\t水平制表,橫向跳到下一個輸出區(qū)9\r回車,將當前位置移到本行開頭13\f打印換頁,將當前位置移到下頁開頭12\b退格,將當前位置移到前一列8\ddd1到3位八進制數所代表的字符\xhh1到2位十六進制數所代表的字符printf("a=%d\tb=\'%c\'\tTCP\\IP\n",26,'\101');轉義字符表示含義ASCII碼\\反斜杠字符“\”92\’單引變量:

指在程序的執(zhí)行過程中其值可以發(fā)生變化的量。#include<stdio.h>voidmain(){ inti,x,s,avg; i=0; s=0;

do{ scanf("%d",&x); s=s+x; i=i+1;

}while(i<10);avg=s/10; printf("avg=%d\n",avg);}變量的四要素變量名變量類型變量值存儲單元變量必須先聲明,后使用;可在聲明同時初始化。intsum=0,count=0,i,k;floatarea,avg,y;doublepi=3.14159;charanswer=‘Y’,c1,c2;變量命名規(guī)則:

字母打頭,后跟字母、數字、下劃線;

盡量“見名知義”;

不能與C語言保留字相同;

注意區(qū)分大小寫。變量:

指在程序的執(zhí)行過程中其值可以發(fā)生變化的量。#incl例如:變量a聲明為以下不同類型時,執(zhí)行

a=13;

后內存中實際存放的情況:例如:2.3數據的運算及其規(guī)則2.3.1算術運算符(1)基本的算術運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。如:5/3)%模運算符,或稱求余運算符,%兩側均應為整型數據,如:7%4的值為3)。5/3結果?是1還是1.666667?2.3數據的運算及其規(guī)則2.3.1算術運算符5/3(2)運算符的優(yōu)先級與結合性C語言規(guī)定了運算符的優(yōu)先級在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。C還規(guī)定了各種運算符的結合方向(結合性)

基本算術運算符的結合方向為“自左至右”,即先左后右。優(yōu)先級與結合性(2)運算符的優(yōu)先級與結合性優(yōu)先級與結合性(3)

自增、自減運算符作用:使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)

注意:

(1)自增運算符(++),自減運算符(--),只能用于變量,不能用于常量或表達式,(2)++和--的結合方向是“自右至左”。(3)i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值,如j=++i;i++是先使用i的值后,再執(zhí)行i=i+1,如j=i++;優(yōu)先級與結合性(3)自增、自減運算符注意:(3)i++與++i的區(qū)別:(1)算術表達式運算對象包括常量、變量、函數等。

例如:a*b/c-1.5+’a’是一個合法的表達式(2)運算規(guī)則:一個運算符的兩運算量類型要相同。(3)表達式中不同數據類型的轉換

自動轉換:編譯系統自動完成

強制類型轉換:(類型名)(表達式)2.3.2算術表達式(1)算術表達式2.3.2算術表達式自動轉換:

混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據會自動先轉換成同一類型,然后進行運算.說明:這種類型轉換是由系統自動進行的。inta=10,result;floatb=2.5;doublec=19.5;longd=3;result=20+’A’+a*b-c/d;printf(“%d\n”,result);請分析表達式計算過程及運行結果?103自動轉換:混合運算:整型(包括int,short,lo強制類型轉換:強制類型轉換運算符的作用是:將一個表達式轉換成所需類型

一般形式:(類型名)(表達式)例如:(float)a將a轉換成float類型(int)(x+y)將x+y的值轉換成整型(float)1/5將1轉換成float型,結果為float型強制類型轉換:2.3.3C運算符

C的運算符有以下幾類:(1)算術運算符(+-*/%++--)(2)關系運算符(><>=<=!===)(3)邏輯運算符(?。Γ|)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)2.3.3C運算符(8)指針運算符(*和&)(9)求字節(jié)數運算符(sizeof)(10)強制類型轉換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數調用運算符())(8)指針運算符(*和&)關系運算符:(><>=<=!===)(1)關系表達式的值:真——1,假——0例如:if(a+b>=10)……if(x%2==0)……if(a!=b)……if(c>=‘A’)(2)優(yōu)先級與結合性:左結合例如:if(a>b==0)……if(a>b>c)……if(‘A’<=c<=‘Z’)優(yōu)先級與結合性關系運算符:(><>=<=邏輯運算符:(

!&&||)(1)各個邏輯運算符的運算規(guī)則(1)邏輯表達式的值:真——1,假——0例如:if(a>b&&b>c)……if(‘A’<=c&&c<=‘Z’)if(x%3==0||x%5==0)……if(!(a>b))……if(!a)……(2)優(yōu)先級與結合性:左結合例如:if(!a||b)……if(y%4==0&&y%100!=0||y%400==0)…優(yōu)先級與結合性

數值轉換為邏輯量:

非0——真0——假另外還要注意

“短路”問題邏輯運算符:(!&&||)(賦值運算符:(=以及擴展的賦值運算符)(1)計算表達式的值后賦值給變量例如:a=b*2/3;i=i+1;(2)賦值表達式的值:賦值后變量的值例如:printf("%d",a=30);(3)優(yōu)先級與結合性:右結合例如:a=b=c=0;等價于a=(b=(c=0));(4)右側表達式類型與變量類型不符時如何轉換?原則:以變量類型為準自動變換。優(yōu)先級與結合性C語言的表達式加上分號成為一條語句。賦值運算符:(=以及擴展的賦值運算符)(1)計算表達式賦值運算符:(=以及擴展的賦值運算符)(5)擴展的復合賦值運算符:+=-=*=/=%=例如:a+=b*2/3;等價于:a=a+(b+2/3);優(yōu)先級與結合性條件運算符:(?:)例如:printf("%d\n",a>b?a:b);d=a>b?a:b>c?b:c;/*右結合性*/賦值運算符:(=以及擴展的賦值運算符)(5)擴展的復合逗號運算符:(,)例如:a=10,b=a+20,c=90;左結合性;

整個表達式的值取最后一個表達式的值。優(yōu)先級與結合性逗號運算符:(,)例如:a=10,b=a+20,c=9高優(yōu)先級運算符功能結合性

高低!-、++、--(類型名)*、&、sizeof邏輯非取負、自增、自減強制類型轉換指針、地址、求字節(jié)數從右到左*、/、%乘、除、整數求余從左到右+、-加、減從左到右>、>=、<、<=大于、大于等于小于、小于等于從左到右==、!=等于、不等于從左到右&&邏輯與從左到右||邏輯或從左到右?:條件運算符從右到左=、+=、-=、*=、/=、%=賦值、運算并賦值從右到左,逗號運算符從左到右返回高優(yōu)先級運算符功能結合性

高!邏輯非從右到左*、/、%乘、除作業(yè):

一、二、三、

四(1,2)、五作業(yè):

一、二、三、

四(1,2)、五第二章第二章本章要點數據的存儲及數據類型數據的表示——常量和變量數據的運算及其規(guī)則本章要點數據的存儲及數據類型2.1數據的存儲及數據類型以二進制形式存儲計算機存儲器的存儲單元按字節(jié)編址C語言針對不同類型的數據采用不同的存儲方式——具體體現在不同的“數據類型”上2.1數據的存儲及數據類型以二進制形式存儲C語言提供了以下一些數據類型:

數據類型構造類型指針類型空類型(無值類型)void枚舉類型enum數組類型結構體類型struct聯合體類型union基本類型整型int字符型char實型(浮點型)單精度實型float雙精度實型doubleC語言提供了以下一些數據類型:數據整數的存儲方式:

以十進制補碼形式存儲。一般整數占用的空間:TurboC2.0:2個字節(jié)的存儲單元

TurboC++3.0:2個字節(jié)的存儲單元VC++6.0:4個字節(jié)根據占用空間和數值范圍的不同細分為幾種類型:

基本整型int無符號的基本整型unsignedint短整型shortint無符號的短整型unsignedshortint長整型longint無符號的長整型unsignedlongint

整數的存儲方式:類型聲明符字節(jié)數取值范圍int2-32768~32767即-215~(215-1)short[int]2-32768~32767即-215~(215-1)long[int]4-2147483648~2147483647

即-231~(231-1)unsigned[int]20~65535即0~(216-1)unsignedshort20~65535即0~(216-1)unsignedlong40~4294967295即0~(232-1)以TurboC++3.0為例:類型聲明符字節(jié)數取值范圍int2-32768~32767實數的存儲形式:實數采用指數形式存儲,即浮點數。將實數轉化為標準化指數形式,分別存儲尾數部分和指數部分。

類型位數絕對值范圍有效數字float4字節(jié)10-38~10387Double8字節(jié)10-308~1030816longdouble16字節(jié)10-4932~10493219實數的存儲形式:類型位數單個字符的存儲方式:存儲字符的編碼;目前大多數計算機采用ASCII代碼;占用的空間:一個字節(jié)的存儲空間。例如:

字符’A’

為char類型,在內存中占1字節(jié),存儲的是其ASCII碼值65。單個字符的存儲方式:2.2程序中數據是如何表示的?常量、變量常量:

程序運行過程中,其值不能

被改變的量。常量也相應地區(qū)分為不同的類型:#include<stdio.h>voidmain(){ inti,x,s,avg; i=0; s=0;

do{ scanf("%d",&x); s=s+x; i=i+1;

}while(i<10);avg=s/10; printf("avg=%d\n",avg);}整型125,-100,0,037,0x38

默認為int,可以用后綴指

明類型:289L,32767L,

39u,39090u,65536Lu實型3.14,-3.7e9,.23e-3默認double類型,9.6f為float型字符型‘a’,‘b’,‘2’字符串“a”,“ab”,“1234”八進制十六進制2.2程序中數據是如何表示的?常量、變量#include#include<stdio.h>voidmain(){inta;a=32767+1;/*int+int*/printf("a=%d",a);}運行時顯示??-3276801111111

111111113276700000000

000000011-----------------------------------10000000

00000000-32768小心結果“溢出”!整型數據運算中應該注意的問題:請思考:longa;a=32767+1;a:-32768longa;a=32767L+1;a:3276800000000

00000000

01111111

1111111132767L00000000

00000000

00000000

000000011-----------------------------------------------------00000000

00000000

10000000

0000000032768#include<stdio.h>運行時顯示??-32(1)字符本質上是整數,既可以當作字符,也可以當作整數使用;

printf(“%c,%d,%c,%c”,’a’,’a’,’a’-32,97-32);運行時顯示??a,97,A,A字符型數據注意的問題:(2)有些特殊字符無法正常表示出來,需要使用轉義符“\”進行轉義。

換行符(ASCII碼值為10)表示為‘\n’,即把字母n轉義為換行符。如:inta=10,b=20;

printf(“a=%d\nb=%d\n”,a,b);(1)字符本質上是整數,既可以當作字符,也可以當作整數使用;轉義字符表示含義ASCII碼\\反斜杠字符“\”92\’單引號字符39\”雙引號字符34\n換行,將當前位置移到下一行開頭10\t水平制表,橫向跳到下一個輸出區(qū)9\r回車,將當前位置移到本行開頭13\f打印換頁,將當前位置移到下頁開頭12\b退格,將當前位置移到前一列8\ddd1到3位八進制數所代表的字符\xhh1到2位十六進制數所代表的字符printf("a=%d\tb=\'%c\'\tTCP\\IP\n",26,'\101');轉義字符表示含義ASCII碼\\反斜杠字符“\”92\’單引變量:

指在程序的執(zhí)行過程中其值可以發(fā)生變化的量。#include<stdio.h>voidmain(){ inti,x,s,avg; i=0; s=0;

do{ scanf("%d",&x); s=s+x; i=i+1;

}while(i<10);avg=s/10; printf("avg=%d\n",avg);}變量的四要素變量名變量類型變量值存儲單元變量必須先聲明,后使用;可在聲明同時初始化。intsum=0,count=0,i,k;floatarea,avg,y;doublepi=3.14159;charanswer=‘Y’,c1,c2;變量命名規(guī)則:

字母打頭,后跟字母、數字、下劃線;

盡量“見名知義”;

不能與C語言保留字相同;

注意區(qū)分大小寫。變量:

指在程序的執(zhí)行過程中其值可以發(fā)生變化的量。#incl例如:變量a聲明為以下不同類型時,執(zhí)行

a=13;

后內存中實際存放的情況:例如:2.3數據的運算及其規(guī)則2.3.1算術運算符(1)基本的算術運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。如:5/3)%模運算符,或稱求余運算符,%兩側均應為整型數據,如:7%4的值為3)。5/3結果?是1還是1.666667?2.3數據的運算及其規(guī)則2.3.1算術運算符5/3(2)運算符的優(yōu)先級與結合性C語言規(guī)定了運算符的優(yōu)先級在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。C還規(guī)定了各種運算符的結合方向(結合性)

基本算術運算符的結合方向為“自左至右”,即先左后右。優(yōu)先級與結合性(2)運算符的優(yōu)先級與結合性優(yōu)先級與結合性(3)

自增、自減運算符作用:使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)

注意:

(1)自增運算符(++),自減運算符(--),只能用于變量,不能用于常量或表達式,(2)++和--的結合方向是“自右至左”。(3)i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值,如j=++i;i++是先使用i的值后,再執(zhí)行i=i+1,如j=i++;優(yōu)先級與結合性(3)自增、自減運算符注意:(3)i++與++i的區(qū)別:(1)算術表達式運算對象包括常量、變量、函數等。

例如:a*b/c-1.5+’a’是一個合法的表達式(2)運算規(guī)則:一個運算符的兩運算量類型要相同。(3)表達式中不同數據類型的轉換

自動轉換:編譯系統自動完成

強制類型轉換:(類型名)(表達式)2.3.2算術表達式(1)算術表達式2.3.2算術表達式自動轉換:

混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數據會自動先轉換成同一類型,然后進行運算.說明:這種類型轉換是由系統自動進行的。inta=10,result;floatb=2.5;doublec=19.5;longd=3;result=20+’A’+a*b-c/d;printf(“%d\n”,result);請分析表達式計算過程及運行結果?103自動轉換:混合運算:整型(包括int,short,lo強制類型轉換:強制類型轉換運算符的作用是:將一個表達式轉換成所需類型

一般形式:(類型名)(表達式)例如:(float)a將a轉換成float類型(int)(x+y)將x+y的值轉換成整型(float)1/5將1轉換成float型,結果為float型強制類型轉換:2.3.3C運算符

C的運算符有以下幾類:(1)算術運算符(+-*/%++--)(2)關系運算符(><>=<=!===)(3)邏輯運算符(?。Γ|)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)2.3.3C運算符(8)指針運算符(*和&)(9)求字節(jié)數運算符(sizeof)(10)強制類型轉換運算符((類型))(11)分量運算符(.->)(12)下標運算符([])(13)其他(如函數調用運算符())(8)指針運算符(*和&)關系運算符:(><>=<=!===)(1)關系表達式的值:真——1,假——0例如:if(a+b>=10)……if(x%2==0)……if(a!=b)……if(c>=‘A’)(2)優(yōu)先級與結合性:左結合例如:if(a>b==0)……if(a>b>c)……if(‘A’<=c<=‘Z’)優(yōu)

溫馨提示

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

評論

0/150

提交評論