基本數(shù)據(jù)類型及運算課件_第1頁
基本數(shù)據(jù)類型及運算課件_第2頁
基本數(shù)據(jù)類型及運算課件_第3頁
基本數(shù)據(jù)類型及運算課件_第4頁
基本數(shù)據(jù)類型及運算課件_第5頁
已閱讀5頁,還剩145頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2章基本數(shù)據(jù)類型及運算第2章基本數(shù)據(jù)類型及運算1學習目標了解C語言的構(gòu)成元素熟悉C語言的數(shù)據(jù)類型熟悉常量、變量掌握算術(shù)運算符、賦值運算符、逗號運算符理解數(shù)據(jù)類型轉(zhuǎn)換重點算術(shù)運算符、賦值運算符、逗號運算符學習目標22.1C語言的構(gòu)成元素2.1.1構(gòu)成元素概述表2-1:自然語言的構(gòu)成元素和C語言的構(gòu)成元素的對比普通語言的構(gòu)成元素C語言的構(gòu)成元素符號、字字符集、常量、變量、關(guān)鍵字、運算符等詞表達式句語句段落函數(shù)章節(jié)程序文件文章完整的程序2.1C語言的構(gòu)成元素2.1.1構(gòu)成元素概述普通語言32.1.2字符集C語言的字符集包括:(1)大、小寫英文字母(2)數(shù)字:0~9(3)運算符:+、-、*、/、%等(4)括號:()、{}、[](5)標點符號:'、"、:、;。(6)空白符:空格符、制表符、換行符等(7)特殊符號:\、_、$、#

2.1.2字符集C語言的字符集包括:42.1.3標識符標識符是用來標識C程序中的變量、數(shù)據(jù)類型、函數(shù)等對象的字符序列,實際上就是一個名字。C語言的標識符分為三類:關(guān)鍵字——C語言編譯系統(tǒng)預(yù)先定義的標識符特定標識符——具有特殊含義的標識符用戶自定義標識符2.1.3標識符標識符是用來標識C程序中的變量、數(shù)據(jù)類型52.1.3標識符用戶自定義標識符必須注意以下幾點:只能由字母、數(shù)字、下劃線組成第一個字符必須是字母或下劃線不能和關(guān)鍵字、特定標識符、C語言的庫函數(shù)相同區(qū)分大小寫字母不要使用易混淆的字符盡量做到“見名知義”2.1.3標識符用戶自定義標識符必須注意以下幾點:62.2C語言的數(shù)據(jù)類型2.2.1數(shù)據(jù)類型概述日常生活中,描述不同的對象需要使用不同的數(shù)據(jù)類型描述有多少個人應(yīng)該使用整數(shù)在程序設(shè)計語言中,數(shù)據(jù)往往被劃分成不同的類型2.2C語言的數(shù)據(jù)類型2.2.1數(shù)據(jù)類型概述72.2C語言的數(shù)據(jù)類型C語言的數(shù)據(jù)類型分為四類:基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型(第9章)指針類型(第8章)空類型2.2C語言的數(shù)據(jù)類型C語言的數(shù)據(jù)類型分為四類:82.2C語言的數(shù)據(jù)類型(1)基本數(shù)據(jù)類型包括整型、浮點型、字符型三種對應(yīng)生活中的整數(shù)、實數(shù)和字符數(shù)據(jù)整型又分為短整型、基本整型、長整型三種浮點型又分為單精度、雙精度、長雙精度三種2.2C語言的數(shù)據(jù)類型(1)基本數(shù)據(jù)類型92.2C語言的數(shù)據(jù)類型(2)構(gòu)造數(shù)據(jù)類型包括數(shù)組、結(jié)構(gòu)體、共同體、枚舉四種由程序設(shè)計人員根據(jù)已存在的一種或多種數(shù)據(jù)類型構(gòu)造出來的(3)指針類型一種特殊的數(shù)據(jù)類型與計算機內(nèi)存中的地址相關(guān)使用指針能夠簡化程序,提高程序執(zhí)行效率2.2C語言的數(shù)據(jù)類型(2)構(gòu)造數(shù)據(jù)類型102.2C語言的數(shù)據(jù)類型(4)空類型空類型的說明符為void一般用做函數(shù)的返回值類型——如果一個函數(shù)執(zhí)行后沒有返回值,該函數(shù)就定義為空類型2.2C語言的數(shù)據(jù)類型(4)空類型112.2.2整型整型數(shù)據(jù)對應(yīng)生活中的整數(shù)。1.分類根據(jù)占有存儲空間的長度:(1)基本整型,類型說明符為int(2)短整型,類型說明符為shortint或short(3)長整型,類型說明符為longint或long2.2.2整型整型數(shù)據(jù)對應(yīng)生活中的整數(shù)。122.2.2整型根據(jù)存儲單元中是否有符號位:(1)有符號類型有符號類型的說明符與一般整型、短整型和長整型的說明符一致。有符號類型的數(shù)據(jù)在存儲時,其存儲單元的最高位是符號位,用來表示正負,并不表示數(shù)值大小。2.2.2整型根據(jù)存儲單元中是否有符號位:132.2.2整型(2)無符號類型無符號類型說明符為unsigned無符號一般整型,unsignedint無符號短整型,unsignedshort無符號長整型,unsignedlong無符號類型的數(shù)據(jù)在存儲時,存儲單元中沒有符號位,存儲單元的每一位都用來表示數(shù)值大小。2.2.2整型(2)無符號類型142.2.2整型C語言沒有具體規(guī)定以上各類型數(shù)據(jù)所占的字節(jié)數(shù),數(shù)據(jù)類型所占字節(jié)數(shù)取決于編譯軟件和機器硬件。在VC6.0環(huán)境下,以目前通用的32位計算機為例,各種整型數(shù)據(jù)所占字節(jié)數(shù)和取值范圍如表2-2所示。2.2.2整型C語言沒有具體規(guī)定以上各類型數(shù)據(jù)所占的字節(jié)15表2-2整型數(shù)據(jù)的字節(jié)數(shù)與取值范圍關(guān)鍵字字節(jié)數(shù)(位數(shù))取值范圍short2(16)-32768~32767即-215~215-1unsignedshort2(16)0~65535即0~216-1int4(32)-2147483648~2147483647即-231~231-1unsignedint4(32)0~4294967295即0~232-1long4(32)-2147483648~2147483647即-231~231-1unsignedlong4(32)0~4294967295即0~232-1表2-2整型數(shù)據(jù)的字節(jié)數(shù)與取值范圍關(guān)鍵字字節(jié)數(shù)取值范圍s162.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)所有數(shù)據(jù)在內(nèi)存中都是以二進制形式存放存放有符號整數(shù)時,存儲單元中左面第一位表示符號為0表示數(shù)據(jù)為正數(shù)為1表示數(shù)據(jù)為負數(shù)無符號類型的數(shù)據(jù)在內(nèi)存中沒有符號位,所有存儲單元都用來表示數(shù)值大小。2.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)172.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)整型數(shù)據(jù)在內(nèi)存中以補碼形式表示正整數(shù)的補碼是該數(shù)的二進制形式負整數(shù)的補碼:絕對值二進制形式按位取反加12.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)182.2.3浮點型浮點型即實型,對應(yīng)生活中的實數(shù)。1.分類根據(jù)能夠表示數(shù)據(jù)的大小和精度:單精度,類型說明符為float雙精度,類型說明符為double長雙精度,類型說明符為longdouble浮點型數(shù)據(jù)的相關(guān)參數(shù)如表2-3所示2.2.3浮點型浮點型即實型,對應(yīng)生活中的實數(shù)。19關(guān)鍵字字節(jié)數(shù)(位數(shù))有效數(shù)字絕對值的取值范圍float4(32)6~710-37~1038

double8(64)15~1610-307~10308

longdouble16(128)18~1910-4931~104932

表2-3浮點型數(shù)據(jù)的字節(jié)數(shù)與取值范圍關(guān)鍵字字節(jié)數(shù)有效數(shù)字絕對值的取值范圍float4(32)6~202.2.3浮點型2.浮點型數(shù)據(jù)的誤差由于浮點型數(shù)據(jù)在存儲時使用的存儲單元長度有限,因此能提供的有效數(shù)字位數(shù)也是有限的,有效數(shù)字位數(shù)決定了浮點型數(shù)據(jù)的精度。2.2.3浮點型2.浮點型數(shù)據(jù)的誤差21【例2.2】浮點型數(shù)據(jù)的有效數(shù)字。#include<stdio.h>voidmain(){floatx;doubley;x=66666.66666;y=66666.666666666;printf("x=%f\ny=%f\n",x,y);}【例2.2】浮點型數(shù)據(jù)的有效數(shù)字。22【例2.3】浮點型數(shù)據(jù)的舍入誤差。#include<stdio.h>voidmain(){floatx,y;x=123456.789e6;y=x+200;printf("x=%f\n",x);printf("y=%f\n",y);}【例2.3】浮點型數(shù)據(jù)的舍入誤差。232.2.4字符型字符型數(shù)據(jù)的類型說明符為char。字符型數(shù)據(jù)在內(nèi)存中占一個字節(jié)。字符型數(shù)據(jù)在存儲時,內(nèi)存中存儲的并不是真正的字符,而是字符的ASCII碼。2.2.4字符型字符型數(shù)據(jù)的類型說明符為char。242.3常量常量在程序運行過程中值不能被改變的量。常量分為符號常量和直接常量。直接常量:又稱字面常量,包括整型常量、浮點型常量、字符常量和字符串常量。符號常量:用標識符表示的常量,從字面上不能直接看出其類型和值。2.3常量常量252.3.1符號常量在程序中,如果某個常量多次使用,則可以用一個標識符來表示該常量,稱為符號常量。符號常量在使用之前必須先定義。2.3.1符號常量在程序中,如果某個常量多次使用,則可以262.3.1符號常量定義符號常量的一般形式為:#define標識符直接常量#define是一條預(yù)處理命令,稱為宏定義命令,其功能是把標識符定義為其后的直接常量。習慣上符號常量的標識符用大寫字母,變量的標識符用小寫字母。注意:末尾不加分號。符號常量定義后,可以像所表示的直接常量一樣在程序中使用。2.3.1符號常量定義符號常量的一般形式為:27【例2.4】求半徑為4.0的球體積和表面積。#include<stdio.h>#define

PI

3.14159voidmain(){floatr,v,s;r=4.0;v=4.0/3.0*PI*r*r*r;s=4.0*PI*r*r;printf("v=%f,s=%f\n",v,s);}【例2.4】求半徑為4.0的球體積和表面積。282.3.1符號常量注意:符號常量也是常量,程序運行期間,其值不能被改變,不能對符號常量賦值。使用符號常量具有以下好處:(1)含義清楚(2)一改全改2.3.1符號常量注意:292.3.2整型常量整型常量即整常數(shù)。在C語言中,整型常量可以表示為十進制、八進制和十六進制三種形式。1.十進制整型常量十進制整型常量與數(shù)學上的整數(shù)表示方法相同,由0~9組成。2.3.2整型常量整型常量即整常數(shù)。302.3.2整型常量2.八進制整型常量八進制整型常量以數(shù)字0作為前綴,由0~7組成。八進制016等于十進制14八進制0111等于十進制732.3.2整型常量2.八進制整型常量312.3.2整型常量3.十六進制整型常量十六進制整型常量以0X或0x作為前綴,由0~9、A~F或a~f構(gòu)成。十六進制0X2B等于十進制43十六進制0XA0等于十進制160十六進制0XFFFF等于十進制655352.3.2整型常量3.十六進制整型常量322.3.2整型常量4.說明(1)溢出如果不作特別指定,系統(tǒng)都將整型常量按一般整型(int)處理。如果一個整型常量超出機器所能表示的范圍,存儲時就會發(fā)生溢出。在C語言中,整數(shù)溢出不會使程序出錯,但通常會得到一個不正確的值。2.3.2整型常量4.說明33【例2.5】整型常量的溢出。#include<stdio.h>voidmain(){intx,y;x=10000;y=2147483649;printf("x=%dy=%d\n",x,y);}【例2.5】整型常量的溢出。342.3.2整型常量(2)后綴一個整型常量可根據(jù)需要加上后綴。358u,無符號整型常量358L,長整型常量2.3.2整型常量(2)后綴352.3.3浮點型常量浮點型常量即浮點數(shù)(實數(shù))。在C語言中,浮點型常量有二種表示形式:十進制小數(shù)形式和指數(shù)形式。1.小數(shù)形式由正負號、數(shù)碼0~9和一個小數(shù)點組成。小數(shù)點必須有,小數(shù)點前面和后面可以沒有數(shù)字。2.3.3浮點型常量浮點型常量即浮點數(shù)(實數(shù))。362.3.3浮點型常量2.指數(shù)形式由十進制小數(shù)或整數(shù)與字母“e”或“E”組成。一般形式為:aEn或aena可以是十進制小數(shù)或整數(shù)n必須為十進制整數(shù)整體表示數(shù)據(jù)a×10n注意:字母“e”或“E”前面必須有數(shù)字,后面必須為整數(shù)2.3.3浮點型常量2.指數(shù)形式372.3.3浮點型常量浮點型常量在不加任何后綴時,系統(tǒng)會默認為雙精度double型。浮點型常量加后綴F或f表示該常量為單精度float類型,加后綴L或l表示為長雙精度longdouble類型。2.3.3浮點型常量浮點型常量在不加任何后綴時,系統(tǒng)會默382.3.4字符常量字符常量分為普通字符常量和轉(zhuǎn)義字符兩種。1.普通字符常量普通字符常量:用單引號括起來的一個字符?!產(chǎn)’‘s’‘5’注意:C語言區(qū)分大小寫字母。'A'和'a'是不同的字符常量2.3.4字符常量字符常量分為普通字符常量和轉(zhuǎn)義字符兩種。392.3.4字符常量2.轉(zhuǎn)義字符以反斜線\開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義。\n表示“回車換行”常用轉(zhuǎn)義字符及其含義如表2-4所示。2.3.4字符常量2.轉(zhuǎn)義字符40轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII碼\n回車換行10\t橫向跳到下一制表位置9\b退格8\r回車13\f走紙換頁12\\反斜線符"\"92\'單引號符39\”雙引號符34 \a鳴鈴7\ddd1~3位八進制數(shù)所代表的字符\xhh1~2位十六進制數(shù)所代表的字符表2-4常用的轉(zhuǎn)義字符及其含義

轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII碼\n回車換行10\t橫向跳412.3.4字符常量\ddd和\xhh均表示字符ddd是字符八進制形式的ASCII碼hh是字符十六進制形式的ASCII碼\102、\x42均表示字符’B’注意:在程序中,字符常量必須用單引號括起來,包括轉(zhuǎn)義字符。2.3.4字符常量\ddd和\xhh均表示字符422.3.5字符串常量字符串常量是由一對雙引號括起的字符序列。"CHINA",“Cprogram”,"$12.5",“String\n”2.3.5字符串常量字符串常量是由一對雙引號括起的字符序432.3.5字符串常量字符串常量和字符常量的區(qū)別:(1)字符常量由單引號括起來,字符串常量由雙引號括起來。(2)字符常量只能是單個字符,字符串常量則可以包含0個或多個字符。(3)保存字符常量可以使用字符變量,保存字符串常量可以使用數(shù)組。2.3.5字符串常量字符串常量和字符常量的區(qū)別:442.3.5字符串常量(4)字符常量占一個字節(jié)的內(nèi)存空間。字符串常量所占的內(nèi)存字節(jié)數(shù)等于字符串中的字符個數(shù)加1,因為字符串的末尾有一個字節(jié)串結(jié)束標志\0。2.3.5字符串常量(4)字符常量占一個字節(jié)的內(nèi)存空間。452.4變量2.4.1變量的概念變量:在程序的運行過程中,其值可以改變的量。每個變量都有自己的名字。變量命名必須符合用戶自定義標識符命名規(guī)則每個變量都占據(jù)一定數(shù)量的內(nèi)存單元,用來存放變量的值。變量必須先定義后使用。2.4變量2.4.1變量的概念462.4.2變量定義變量定義的一般形式為:類型說明符變量名1,變量名2,...;注意:各變量名之間用逗號間隔,類型說明符與變量名之間至少用一個空格間隔。變量不能重復定義,或者說,變量不能重名。2.4.2變量定義變量定義的一般形式為:472.4.3變量初始化初始化:定義變量時對變量賦值。inta=3;floatb=4;charc=‘\n’;注意:以下初始化是錯誤的!inta=b=c=6;2.4.3變量初始化初始化:定義變量時對變量賦值。482.4.4變量賦值變量定義后,可以用“=”將一個表達式的值賦給該變量。inta,b;a=1;b=a;2.4.4變量賦值變量定義后,可以用“=”將一個表達式的492.5運算符和表達式2.5.1運算符概述1.運算符的分類C語言運算符豐富2.5運算符和表達式2.5.1運算符概述50算術(shù)運算符+、-、*、/、%、++、--關(guān)系運算符>、<、==、>=、<=、!=邏輯運算符!、&&、||位運算符<<、>>、~、|、∧、&賦值運算符=,復合賦值運算符條件運算符?:逗號運算符,指針和取地址運算符*、&求字節(jié)運算符sizeof強制類型轉(zhuǎn)換運算符(類型)分量運算符->、.下標運算符[]其他運算符例如()

算術(shù)運算符+、-、*、/、%512.5.1運算符概述2.學習運算符應(yīng)注意的問題(1)運算符的功能(2)運算符的優(yōu)先級(3)運算符的結(jié)合性2.5.1運算符概述2.學習運算符應(yīng)注意的問題522.5.2算術(shù)運算符和算術(shù)表達式1.算術(shù)運算符算術(shù)運算符用于各類數(shù)值運算。(1)基本算術(shù)運算符+、-、*、/、%優(yōu)先級:先乘除,后加減結(jié)合性:自左向右,即左結(jié)合2.5.2算術(shù)運算符和算術(shù)表達式1.算術(shù)運算符532.5.2算術(shù)運算符和算術(shù)表達式使用算術(shù)運算符時應(yīng)注意以下問題:①如果參與+、-、*、/運算的數(shù)據(jù)有一個為浮點型常量,結(jié)果就為double類型。0*1.2+5*8結(jié)果為double類型②%要求參與運算的量均為整型,運算的結(jié)果等于兩數(shù)相除后的余數(shù)。2.5.2算術(shù)運算符和算術(shù)表達式使用算術(shù)運算符時應(yīng)注意以下542.5.2算術(shù)運算符和算術(shù)表達式(2)自增、自減運算符:++

--二者都是單目運算符。二者都有前置和后置兩種形式:前置:++i(--i)i的值加1(減1);i的值作為表達式的值后置:i++(i--)i的值作為表達式的值;i的值加1(減1)2.5.2算術(shù)運算符和算術(shù)表達式(2)自增、自減運算符:+55#include<stdio.h>voidmain(){inta,b,c;a=1;b=++a;c=a--;printf("%d,%d,%d\n",a,b,c);}#include<stdio.h>562.5.2算術(shù)運算符和算術(shù)表達式注意:自增、自減運算符只能用于變量,不能用于常量和表達式。2.5.2算術(shù)運算符和算術(shù)表達式注意:自增、自減運算符只能572.5.2算術(shù)運算符和算術(shù)表達式(3)正負號運算符+-都是單目運算符。優(yōu)先級:與自增、自減運算符同級高于基本算術(shù)運算符結(jié)合性:自右向左,即右結(jié)合。2.5.2算術(shù)運算符和算術(shù)表達式(3)正負號運算符582.算術(shù)表達式(1)算術(shù)表達式的概念表達式是由運算符連接常量、變量、函數(shù)等運算對象構(gòu)成的式子。算術(shù)表達式就是用算術(shù)運算符連接各種運算對象構(gòu)成的式子。2.算術(shù)表達式(1)算術(shù)表達式的概念592.算術(shù)表達式(2)算術(shù)表達式的運算不同類型的數(shù)據(jù)之間可以進行混合運算。當一個算術(shù)運算符兩側(cè)的運算對象的數(shù)據(jù)類型不同時,系統(tǒng)將自動把運算符兩側(cè)的運算對象轉(zhuǎn)換成同一種類型,然后再進行運算。(具體見2.6節(jié))2.算術(shù)表達式(2)算術(shù)表達式的運算602.5.3賦值運算符和賦值表達式賦值運算符簡單賦值運算符=復合算術(shù)賦值運算符+=、-=、*=、/=、%=復合位賦值運算符(第10章)&=、|=、^=、>>=、<<=2.5.3賦值運算符和賦值表達式賦值運算符612.5.3賦值運算符和賦值表達式由賦值運算符將一個變量和一個表達式連接起來構(gòu)成的式子稱為賦值表達式。賦值表達式的一般形式:<變量><賦值運算符><表達式>(1)賦值運算符左側(cè)必須是變量。(2)賦值運算符具有右結(jié)合性。(3)賦值運算符的優(yōu)先級低于算術(shù)運算符。2.5.3賦值運算符和賦值表達式由賦值運算符將一個變量和一622.5.3賦值運算符和賦值表達式(4)如果賦值運算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動把賦值運算符右邊的類型換成左邊的類型:①實型數(shù)據(jù)賦予整型變量,將舍去小數(shù)部分。②整型數(shù)據(jù)賦予字符型變量,只把低八位賦予字符量。2.5.3賦值運算符和賦值表達式(4)如果賦值運算符兩邊的63例:已知inta=10;求以下表達式的值和a的值。①a+=12②a*=a+7③a+=a-=a*a例:已知642.5.4逗號運算符和逗號表達式逗號運算符的優(yōu)先級:低于賦值運算符。逗號運算符的結(jié)合性:自左向右。逗號運算符的功能:把兩個表達式連接起來,構(gòu)成逗號表達式。2.5.4逗號運算符和逗號表達式逗號運算符的優(yōu)先級:低于652.5.4逗號運算符和逗號表達式逗號表達式的一般形式:表達式1,表達式2逗號表達式的運算:先求表達式1的值再求表達式2的值以表達式2的值作為整個逗號表達式的值。a=5a=3*5,a*4/*a的值變成60*/2.5.4逗號運算符和逗號表達式逗號表達式的一般形式:662.5.4逗號運算符和逗號表達式使用逗號運算符應(yīng)注意的問題:(1)表達式1和表達式2也可以是逗號表達式,所以逗號表達式可擴展為以下形式:表達式1,表達式2,…表達式n(2)并不是在所有出現(xiàn)逗號的地方都組成逗號表達式。2.5.4逗號運算符和逗號表達式使用逗號運算符應(yīng)注意的問672.6數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換有兩種情況:系統(tǒng)自動轉(zhuǎn)換用戶強制轉(zhuǎn)換2.6數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換有兩種情況:682.6.1自動轉(zhuǎn)換不同類型的數(shù)據(jù)進行混合運算時,系統(tǒng)將自動把數(shù)據(jù)轉(zhuǎn)換為同一類型后再運算。轉(zhuǎn)換原則(如圖2-8所示):(1)float單精度類型數(shù)據(jù)參加運算時,被轉(zhuǎn)換成double雙精度類型。(2)char型和short型數(shù)據(jù)參加運算時,被轉(zhuǎn)換成int型。(3)其余按數(shù)據(jù)長度增加的方向進行。2.6.1自動轉(zhuǎn)換不同類型的數(shù)據(jù)進行混合運算時,系統(tǒng)將自69doublefloatlongunsignedintchar,short低高圖2-8數(shù)據(jù)類型自動轉(zhuǎn)換規(guī)則

doublefloatlongunsignedintchar70例:已知inti;floatf;doubled;longg;分析表達式8+‘a(chǎn)’+i*f-d/g運算結(jié)果類型?

例:已知712.6.2強制類型轉(zhuǎn)換可以利用強制類型轉(zhuǎn)換運算符把一個數(shù)據(jù)轉(zhuǎn)換成所需的類型。強制類型轉(zhuǎn)換的一般形式:(類型說明符)(表達式)功能:把表達式的值轉(zhuǎn)換成類型說明符所表示的類型。(float)a(int)(x+y)2.6.2強制類型轉(zhuǎn)換可以利用強制類型轉(zhuǎn)換運算符把一個數(shù)722.6.2強制類型轉(zhuǎn)換(類型說明符)(表達式)注意:類型說明符兩側(cè)必須加括號。必要時,表達式也要加括號。(int)(x+y)

(int)x+y較高類型轉(zhuǎn)換成較低類型時,注意誤差。無論是強制轉(zhuǎn)換還是自動轉(zhuǎn)換,都是根據(jù)數(shù)據(jù)得到一個轉(zhuǎn)換結(jié)果,并不改變原始數(shù)據(jù)的類型。2.6.2強制類型轉(zhuǎn)換(類型說明符)(表達式)732.6.2強制類型轉(zhuǎn)換例:floata=5.75;(int)a的值為5a的值仍為5.752.6.2強制類型轉(zhuǎn)換例:74作業(yè)1、2作業(yè)1、275第2章基本數(shù)據(jù)類型及運算第2章基本數(shù)據(jù)類型及運算76學習目標了解C語言的構(gòu)成元素熟悉C語言的數(shù)據(jù)類型熟悉常量、變量掌握算術(shù)運算符、賦值運算符、逗號運算符理解數(shù)據(jù)類型轉(zhuǎn)換重點算術(shù)運算符、賦值運算符、逗號運算符學習目標772.1C語言的構(gòu)成元素2.1.1構(gòu)成元素概述表2-1:自然語言的構(gòu)成元素和C語言的構(gòu)成元素的對比普通語言的構(gòu)成元素C語言的構(gòu)成元素符號、字字符集、常量、變量、關(guān)鍵字、運算符等詞表達式句語句段落函數(shù)章節(jié)程序文件文章完整的程序2.1C語言的構(gòu)成元素2.1.1構(gòu)成元素概述普通語言782.1.2字符集C語言的字符集包括:(1)大、小寫英文字母(2)數(shù)字:0~9(3)運算符:+、-、*、/、%等(4)括號:()、{}、[](5)標點符號:'、"、:、;。(6)空白符:空格符、制表符、換行符等(7)特殊符號:\、_、$、#

2.1.2字符集C語言的字符集包括:792.1.3標識符標識符是用來標識C程序中的變量、數(shù)據(jù)類型、函數(shù)等對象的字符序列,實際上就是一個名字。C語言的標識符分為三類:關(guān)鍵字——C語言編譯系統(tǒng)預(yù)先定義的標識符特定標識符——具有特殊含義的標識符用戶自定義標識符2.1.3標識符標識符是用來標識C程序中的變量、數(shù)據(jù)類型802.1.3標識符用戶自定義標識符必須注意以下幾點:只能由字母、數(shù)字、下劃線組成第一個字符必須是字母或下劃線不能和關(guān)鍵字、特定標識符、C語言的庫函數(shù)相同區(qū)分大小寫字母不要使用易混淆的字符盡量做到“見名知義”2.1.3標識符用戶自定義標識符必須注意以下幾點:812.2C語言的數(shù)據(jù)類型2.2.1數(shù)據(jù)類型概述日常生活中,描述不同的對象需要使用不同的數(shù)據(jù)類型描述有多少個人應(yīng)該使用整數(shù)在程序設(shè)計語言中,數(shù)據(jù)往往被劃分成不同的類型2.2C語言的數(shù)據(jù)類型2.2.1數(shù)據(jù)類型概述822.2C語言的數(shù)據(jù)類型C語言的數(shù)據(jù)類型分為四類:基本數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型(第9章)指針類型(第8章)空類型2.2C語言的數(shù)據(jù)類型C語言的數(shù)據(jù)類型分為四類:832.2C語言的數(shù)據(jù)類型(1)基本數(shù)據(jù)類型包括整型、浮點型、字符型三種對應(yīng)生活中的整數(shù)、實數(shù)和字符數(shù)據(jù)整型又分為短整型、基本整型、長整型三種浮點型又分為單精度、雙精度、長雙精度三種2.2C語言的數(shù)據(jù)類型(1)基本數(shù)據(jù)類型842.2C語言的數(shù)據(jù)類型(2)構(gòu)造數(shù)據(jù)類型包括數(shù)組、結(jié)構(gòu)體、共同體、枚舉四種由程序設(shè)計人員根據(jù)已存在的一種或多種數(shù)據(jù)類型構(gòu)造出來的(3)指針類型一種特殊的數(shù)據(jù)類型與計算機內(nèi)存中的地址相關(guān)使用指針能夠簡化程序,提高程序執(zhí)行效率2.2C語言的數(shù)據(jù)類型(2)構(gòu)造數(shù)據(jù)類型852.2C語言的數(shù)據(jù)類型(4)空類型空類型的說明符為void一般用做函數(shù)的返回值類型——如果一個函數(shù)執(zhí)行后沒有返回值,該函數(shù)就定義為空類型2.2C語言的數(shù)據(jù)類型(4)空類型862.2.2整型整型數(shù)據(jù)對應(yīng)生活中的整數(shù)。1.分類根據(jù)占有存儲空間的長度:(1)基本整型,類型說明符為int(2)短整型,類型說明符為shortint或short(3)長整型,類型說明符為longint或long2.2.2整型整型數(shù)據(jù)對應(yīng)生活中的整數(shù)。872.2.2整型根據(jù)存儲單元中是否有符號位:(1)有符號類型有符號類型的說明符與一般整型、短整型和長整型的說明符一致。有符號類型的數(shù)據(jù)在存儲時,其存儲單元的最高位是符號位,用來表示正負,并不表示數(shù)值大小。2.2.2整型根據(jù)存儲單元中是否有符號位:882.2.2整型(2)無符號類型無符號類型說明符為unsigned無符號一般整型,unsignedint無符號短整型,unsignedshort無符號長整型,unsignedlong無符號類型的數(shù)據(jù)在存儲時,存儲單元中沒有符號位,存儲單元的每一位都用來表示數(shù)值大小。2.2.2整型(2)無符號類型892.2.2整型C語言沒有具體規(guī)定以上各類型數(shù)據(jù)所占的字節(jié)數(shù),數(shù)據(jù)類型所占字節(jié)數(shù)取決于編譯軟件和機器硬件。在VC6.0環(huán)境下,以目前通用的32位計算機為例,各種整型數(shù)據(jù)所占字節(jié)數(shù)和取值范圍如表2-2所示。2.2.2整型C語言沒有具體規(guī)定以上各類型數(shù)據(jù)所占的字節(jié)90表2-2整型數(shù)據(jù)的字節(jié)數(shù)與取值范圍關(guān)鍵字字節(jié)數(shù)(位數(shù))取值范圍short2(16)-32768~32767即-215~215-1unsignedshort2(16)0~65535即0~216-1int4(32)-2147483648~2147483647即-231~231-1unsignedint4(32)0~4294967295即0~232-1long4(32)-2147483648~2147483647即-231~231-1unsignedlong4(32)0~4294967295即0~232-1表2-2整型數(shù)據(jù)的字節(jié)數(shù)與取值范圍關(guān)鍵字字節(jié)數(shù)取值范圍s912.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)所有數(shù)據(jù)在內(nèi)存中都是以二進制形式存放存放有符號整數(shù)時,存儲單元中左面第一位表示符號為0表示數(shù)據(jù)為正數(shù)為1表示數(shù)據(jù)為負數(shù)無符號類型的數(shù)據(jù)在內(nèi)存中沒有符號位,所有存儲單元都用來表示數(shù)值大小。2.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)922.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)整型數(shù)據(jù)在內(nèi)存中以補碼形式表示正整數(shù)的補碼是該數(shù)的二進制形式負整數(shù)的補碼:絕對值二進制形式按位取反加12.2.2整型2.整型數(shù)據(jù)在內(nèi)存中的存儲(了解)932.2.3浮點型浮點型即實型,對應(yīng)生活中的實數(shù)。1.分類根據(jù)能夠表示數(shù)據(jù)的大小和精度:單精度,類型說明符為float雙精度,類型說明符為double長雙精度,類型說明符為longdouble浮點型數(shù)據(jù)的相關(guān)參數(shù)如表2-3所示2.2.3浮點型浮點型即實型,對應(yīng)生活中的實數(shù)。94關(guān)鍵字字節(jié)數(shù)(位數(shù))有效數(shù)字絕對值的取值范圍float4(32)6~710-37~1038

double8(64)15~1610-307~10308

longdouble16(128)18~1910-4931~104932

表2-3浮點型數(shù)據(jù)的字節(jié)數(shù)與取值范圍關(guān)鍵字字節(jié)數(shù)有效數(shù)字絕對值的取值范圍float4(32)6~952.2.3浮點型2.浮點型數(shù)據(jù)的誤差由于浮點型數(shù)據(jù)在存儲時使用的存儲單元長度有限,因此能提供的有效數(shù)字位數(shù)也是有限的,有效數(shù)字位數(shù)決定了浮點型數(shù)據(jù)的精度。2.2.3浮點型2.浮點型數(shù)據(jù)的誤差96【例2.2】浮點型數(shù)據(jù)的有效數(shù)字。#include<stdio.h>voidmain(){floatx;doubley;x=66666.66666;y=66666.666666666;printf("x=%f\ny=%f\n",x,y);}【例2.2】浮點型數(shù)據(jù)的有效數(shù)字。97【例2.3】浮點型數(shù)據(jù)的舍入誤差。#include<stdio.h>voidmain(){floatx,y;x=123456.789e6;y=x+200;printf("x=%f\n",x);printf("y=%f\n",y);}【例2.3】浮點型數(shù)據(jù)的舍入誤差。982.2.4字符型字符型數(shù)據(jù)的類型說明符為char。字符型數(shù)據(jù)在內(nèi)存中占一個字節(jié)。字符型數(shù)據(jù)在存儲時,內(nèi)存中存儲的并不是真正的字符,而是字符的ASCII碼。2.2.4字符型字符型數(shù)據(jù)的類型說明符為char。992.3常量常量在程序運行過程中值不能被改變的量。常量分為符號常量和直接常量。直接常量:又稱字面常量,包括整型常量、浮點型常量、字符常量和字符串常量。符號常量:用標識符表示的常量,從字面上不能直接看出其類型和值。2.3常量常量1002.3.1符號常量在程序中,如果某個常量多次使用,則可以用一個標識符來表示該常量,稱為符號常量。符號常量在使用之前必須先定義。2.3.1符號常量在程序中,如果某個常量多次使用,則可以1012.3.1符號常量定義符號常量的一般形式為:#define標識符直接常量#define是一條預(yù)處理命令,稱為宏定義命令,其功能是把標識符定義為其后的直接常量。習慣上符號常量的標識符用大寫字母,變量的標識符用小寫字母。注意:末尾不加分號。符號常量定義后,可以像所表示的直接常量一樣在程序中使用。2.3.1符號常量定義符號常量的一般形式為:102【例2.4】求半徑為4.0的球體積和表面積。#include<stdio.h>#define

PI

3.14159voidmain(){floatr,v,s;r=4.0;v=4.0/3.0*PI*r*r*r;s=4.0*PI*r*r;printf("v=%f,s=%f\n",v,s);}【例2.4】求半徑為4.0的球體積和表面積。1032.3.1符號常量注意:符號常量也是常量,程序運行期間,其值不能被改變,不能對符號常量賦值。使用符號常量具有以下好處:(1)含義清楚(2)一改全改2.3.1符號常量注意:1042.3.2整型常量整型常量即整常數(shù)。在C語言中,整型常量可以表示為十進制、八進制和十六進制三種形式。1.十進制整型常量十進制整型常量與數(shù)學上的整數(shù)表示方法相同,由0~9組成。2.3.2整型常量整型常量即整常數(shù)。1052.3.2整型常量2.八進制整型常量八進制整型常量以數(shù)字0作為前綴,由0~7組成。八進制016等于十進制14八進制0111等于十進制732.3.2整型常量2.八進制整型常量1062.3.2整型常量3.十六進制整型常量十六進制整型常量以0X或0x作為前綴,由0~9、A~F或a~f構(gòu)成。十六進制0X2B等于十進制43十六進制0XA0等于十進制160十六進制0XFFFF等于十進制655352.3.2整型常量3.十六進制整型常量1072.3.2整型常量4.說明(1)溢出如果不作特別指定,系統(tǒng)都將整型常量按一般整型(int)處理。如果一個整型常量超出機器所能表示的范圍,存儲時就會發(fā)生溢出。在C語言中,整數(shù)溢出不會使程序出錯,但通常會得到一個不正確的值。2.3.2整型常量4.說明108【例2.5】整型常量的溢出。#include<stdio.h>voidmain(){intx,y;x=10000;y=2147483649;printf("x=%dy=%d\n",x,y);}【例2.5】整型常量的溢出。1092.3.2整型常量(2)后綴一個整型常量可根據(jù)需要加上后綴。358u,無符號整型常量358L,長整型常量2.3.2整型常量(2)后綴1102.3.3浮點型常量浮點型常量即浮點數(shù)(實數(shù))。在C語言中,浮點型常量有二種表示形式:十進制小數(shù)形式和指數(shù)形式。1.小數(shù)形式由正負號、數(shù)碼0~9和一個小數(shù)點組成。小數(shù)點必須有,小數(shù)點前面和后面可以沒有數(shù)字。2.3.3浮點型常量浮點型常量即浮點數(shù)(實數(shù))。1112.3.3浮點型常量2.指數(shù)形式由十進制小數(shù)或整數(shù)與字母“e”或“E”組成。一般形式為:aEn或aena可以是十進制小數(shù)或整數(shù)n必須為十進制整數(shù)整體表示數(shù)據(jù)a×10n注意:字母“e”或“E”前面必須有數(shù)字,后面必須為整數(shù)2.3.3浮點型常量2.指數(shù)形式1122.3.3浮點型常量浮點型常量在不加任何后綴時,系統(tǒng)會默認為雙精度double型。浮點型常量加后綴F或f表示該常量為單精度float類型,加后綴L或l表示為長雙精度longdouble類型。2.3.3浮點型常量浮點型常量在不加任何后綴時,系統(tǒng)會默1132.3.4字符常量字符常量分為普通字符常量和轉(zhuǎn)義字符兩種。1.普通字符常量普通字符常量:用單引號括起來的一個字符。‘a(chǎn)’‘s’‘5’注意:C語言區(qū)分大小寫字母。'A'和'a'是不同的字符常量2.3.4字符常量字符常量分為普通字符常量和轉(zhuǎn)義字符兩種。1142.3.4字符常量2.轉(zhuǎn)義字符以反斜線\開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義。\n表示“回車換行”常用轉(zhuǎn)義字符及其含義如表2-4所示。2.3.4字符常量2.轉(zhuǎn)義字符115轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII碼\n回車換行10\t橫向跳到下一制表位置9\b退格8\r回車13\f走紙換頁12\\反斜線符"\"92\'單引號符39\”雙引號符34 \a鳴鈴7\ddd1~3位八進制數(shù)所代表的字符\xhh1~2位十六進制數(shù)所代表的字符表2-4常用的轉(zhuǎn)義字符及其含義

轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII碼\n回車換行10\t橫向跳1162.3.4字符常量\ddd和\xhh均表示字符ddd是字符八進制形式的ASCII碼hh是字符十六進制形式的ASCII碼\102、\x42均表示字符’B’注意:在程序中,字符常量必須用單引號括起來,包括轉(zhuǎn)義字符。2.3.4字符常量\ddd和\xhh均表示字符1172.3.5字符串常量字符串常量是由一對雙引號括起的字符序列。"CHINA",“Cprogram”,"$12.5",“String\n”2.3.5字符串常量字符串常量是由一對雙引號括起的字符序1182.3.5字符串常量字符串常量和字符常量的區(qū)別:(1)字符常量由單引號括起來,字符串常量由雙引號括起來。(2)字符常量只能是單個字符,字符串常量則可以包含0個或多個字符。(3)保存字符常量可以使用字符變量,保存字符串常量可以使用數(shù)組。2.3.5字符串常量字符串常量和字符常量的區(qū)別:1192.3.5字符串常量(4)字符常量占一個字節(jié)的內(nèi)存空間。字符串常量所占的內(nèi)存字節(jié)數(shù)等于字符串中的字符個數(shù)加1,因為字符串的末尾有一個字節(jié)串結(jié)束標志\0。2.3.5字符串常量(4)字符常量占一個字節(jié)的內(nèi)存空間。1202.4變量2.4.1變量的概念變量:在程序的運行過程中,其值可以改變的量。每個變量都有自己的名字。變量命名必須符合用戶自定義標識符命名規(guī)則每個變量都占據(jù)一定數(shù)量的內(nèi)存單元,用來存放變量的值。變量必須先定義后使用。2.4變量2.4.1變量的概念1212.4.2變量定義變量定義的一般形式為:類型說明符變量名1,變量名2,...;注意:各變量名之間用逗號間隔,類型說明符與變量名之間至少用一個空格間隔。變量不能重復定義,或者說,變量不能重名。2.4.2變量定義變量定義的一般形式為:1222.4.3變量初始化初始化:定義變量時對變量賦值。inta=3;floatb=4;charc=‘\n’;注意:以下初始化是錯誤的!inta=b=c=6;2.4.3變量初始化初始化:定義變量時對變量賦值。1232.4.4變量賦值變量定義后,可以用“=”將一個表達式的值賦給該變量。inta,b;a=1;b=a;2.4.4變量賦值變量定義后,可以用“=”將一個表達式的1242.5運算符和表達式2.5.1運算符概述1.運算符的分類C語言運算符豐富2.5運算符和表達式2.5.1運算符概述125算術(shù)運算符+、-、*、/、%、++、--關(guān)系運算符>、<、==、>=、<=、!=邏輯運算符!、&&、||位運算符<<、>>、~、|、∧、&賦值運算符=,復合賦值運算符條件運算符?:逗號運算符,指針和取地址運算符*、&求字節(jié)運算符sizeof強制類型轉(zhuǎn)換運算符(類型)分量運算符->、.下標運算符[]其他運算符例如()

算術(shù)運算符+、-、*、/、%1262.5.1運算符概述2.學習運算符應(yīng)注意的問題(1)運算符的功能(2)運算符的優(yōu)先級(3)運算符的結(jié)合性2.5.1運算符概述2.學習運算符應(yīng)注意的問題1272.5.2算術(shù)運算符和算術(shù)表達式1.算術(shù)運算符算術(shù)運算符用于各類數(shù)值運算。(1)基本算術(shù)運算符+、-、*、/、%優(yōu)先級:先乘除,后加減結(jié)合性:自左向右,即左結(jié)合2.5.2算術(shù)運算符和算術(shù)表達式1.算術(shù)運算符1282.5.2算術(shù)運算符和算術(shù)表達式使用算術(shù)運算符時應(yīng)注意以下問題:①如果參與+、-、*、/運算的數(shù)據(jù)有一個為浮點型常量,結(jié)果就為double類型。0*1.2+5*8結(jié)果為double類型②%要求參與運算的量均為整型,運算的結(jié)果等于兩數(shù)相除后的余數(shù)。2.5.2算術(shù)運算符和算術(shù)表達式使用算術(shù)運算符時應(yīng)注意以下1292.5.2算術(shù)運算符和算術(shù)表達式(2)自增、自減運算符:++

--二者都是單目運算符。二者都有前置和后置兩種形式:前置:++i(--i)i的值加1(減1);i的值作為表達式的值后置:i++(i--)i的值作為表達式的值;i的值加1(減1)2.5.2算術(shù)運算符和算術(shù)表達式(2)自增、自減運算符:+130#include<stdio.h>voidmain(){inta,b,c;a=1;b=++a;c=a--;printf("%d,%d,%d\n",a,b,c);}#include<stdio.h>1312.5.2算術(shù)運算符和算術(shù)表達式注意:自增、自減運算符只能用于變量,不能用于常量和表達式。2.5.2算術(shù)運算符和算術(shù)表達式注意:自增、自減運算符只能1322.5.2算術(shù)運算符和算術(shù)表達式(3)正負號運算符+-都是單目運算符。優(yōu)先級:與自增、自減運算符同級高于基本算術(shù)運算符結(jié)合性:自右向左,即右結(jié)合。2.5.2算術(shù)運算符和算術(shù)表達式(3)正負號運算符13

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論