C語(yǔ)言數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第1頁(yè)
C語(yǔ)言數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第2頁(yè)
C語(yǔ)言數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第3頁(yè)
C語(yǔ)言數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第4頁(yè)
C語(yǔ)言數(shù)據(jù)類型、運(yùn)算符和表達(dá)式_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

【教學(xué)要點(diǎn)】C語(yǔ)言的基本元素常量和變量的概念各種數(shù)據(jù)類型的常量及變量變量賦初值不同數(shù)據(jù)類型之間的混合運(yùn)算幾種基本運(yùn)算符與表達(dá)式數(shù)據(jù)類型、運(yùn)算符和表達(dá)式3.1C語(yǔ)言的基本元素一、字符集(符號(hào)集)C語(yǔ)言的基本符號(hào)包括以下五種:大寫字母(A~Z)小寫字母(a~z)阿拉伯?dāng)?shù)字0~9下劃線_標(biāo)點(diǎn)符號(hào)和運(yùn)算符<>語(yǔ)言程序設(shè)計(jì)C3.1C語(yǔ)言的基本元素一、字符集(符號(hào)集)二、標(biāo)識(shí)符用來(lái)標(biāo)記常量、變量、函數(shù)及文件名字的字符序列標(biāo)識(shí)符構(gòu)成規(guī)則:以字母(大小寫均可)或下劃線開頭隨后可跟若干個(gè)(包括0個(gè))字母、數(shù)字、下劃線標(biāo)識(shí)符的長(zhǎng)度各個(gè)系統(tǒng)不同,最好不要超過(guò)8個(gè)字符如x,X,y3,_imax,ELSE,a_to_b(合法)

7x,int,#No,badone,re-input(不合法)語(yǔ)言程序設(shè)計(jì)C3.1C語(yǔ)言的基本元素一、字符集(符號(hào)集)二、標(biāo)識(shí)符三、關(guān)鍵字(P365)也稱保留字。它是C語(yǔ)言中具有特定含義、專門用作語(yǔ)言特定成分的一類標(biāo)識(shí)符ANSI推薦的關(guān)鍵字32個(gè)強(qiáng)調(diào):所有的關(guān)鍵字都有固定的含義,不能用作其它所有的關(guān)鍵字都必須小寫,如elseELSE語(yǔ)言程序設(shè)計(jì)C32個(gè)關(guān)鍵字:(由系統(tǒng)定義,不能重作其它定義)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile

C語(yǔ)言程序設(shè)計(jì)

第一章C語(yǔ)言概述3.2C語(yǔ)言的數(shù)據(jù)類型

數(shù)據(jù)是操作的對(duì)象,數(shù)據(jù)類型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式(代碼、存儲(chǔ)、運(yùn)算)C語(yǔ)言的數(shù)據(jù)類型如下:語(yǔ)言程序設(shè)計(jì)C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型枚舉型單精度雙精度數(shù)組結(jié)構(gòu)體共用體整型

字符型實(shí)型3.3常量和變量一、常量和符號(hào)常量1.常量:

在程序運(yùn)行過(guò)程中,其值保持不變的量。常量區(qū)分為不同類型(表現(xiàn)形式)如12,3.2,‘a(chǎn)’2。符號(hào)常量用一個(gè)標(biāo)識(shí)符代表的一個(gè)常量定義方法:#define標(biāo)識(shí)符常量

語(yǔ)言程序設(shè)計(jì)C例3.1:#definePRICE30voidmain(){ intnum,total;num=10;

total=num*PRICE; printf(“total=%d”,total);}符號(hào)常量在其作用域(上例是整個(gè)主函數(shù))內(nèi)不能改變,不能被賦值如PRICE=40,是錯(cuò)誤的。3.3常量和變量二、變量1.變量:其值可以改變的量,它用標(biāo)識(shí)符(變量名)來(lái)表示,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元2.變量的定義方法類型符標(biāo)識(shí)符3.注意事項(xiàng)見名知義先定義后使用習(xí)慣上,符號(hào)常量名用大寫,變量名用小寫,以示區(qū)別

語(yǔ)言程序設(shè)計(jì)C例3.1:#definePRICE30voidmain(){ intnum,total;num=10;

total=num*PRICE; printf(“total=%d”,total);}3.4整型數(shù)據(jù)一、整型常量十進(jìn)制常數(shù)如123,-34,0八進(jìn)制常量由0~7數(shù)字組成;最高位必須用0做引導(dǎo)符十六進(jìn)制的常量由0~9、a~f(A~F)組成;最高位必須用0x(0X)做引導(dǎo)符注意,復(fù)習(xí)2、8、10、16進(jìn)制之間的轉(zhuǎn)換

30---036-----0x1e

語(yǔ)言程序設(shè)計(jì)C3.4整型數(shù)據(jù)二、整型變量整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)據(jù)在內(nèi)存中以二進(jìn)制的補(bǔ)碼表示2.整型變量的分類根據(jù)其數(shù)值的范圍,可以將變量定義為三類:基本整型(int)2短整型(shortint)2長(zhǎng)整型(longint)4為了充分利用變量的表示范圍,又可以將變量定義為:有符號(hào)數(shù)signed(可省略)無(wú)符號(hào)數(shù)unsigned語(yǔ)言程序設(shè)計(jì)C數(shù)值的表示方法——原碼、反碼和補(bǔ)碼原碼:最高位為符號(hào)位,其余各位為數(shù)值本身的絕對(duì)值反碼:正數(shù):反碼與原碼相同負(fù)數(shù):符號(hào)位為1,其余位對(duì)原碼取反補(bǔ)碼:正數(shù):原碼、反碼、補(bǔ)碼相同負(fù)數(shù):最高位為1,其余位為原碼取反,再對(duì)整個(gè)數(shù)加1

如:15的補(bǔ)碼為:00001111(8位)

0000000000001111(16位)

-15的補(bǔ)碼為:11110001(8位)

11111111111110001(16位)<>語(yǔ)言程序設(shè)計(jì)C3.4整型數(shù)據(jù)二、整型變量2.整型變量的分類有符號(hào)型基本型:以int說(shuō)明,占2個(gè)字節(jié),如inti.sum

短整型,以shortint或short說(shuō)明,占2字節(jié),如shorts

長(zhǎng)整型,以longint或long說(shuō)明,占4字節(jié),如longsum;無(wú)符號(hào)型無(wú)符號(hào)整型:以u(píng)nsignedint或unsigned說(shuō)明,占2字節(jié)如unsignedui

無(wú)符號(hào)短整型:以u(píng)nsignedshort說(shuō)明,占2字節(jié)如unsignedshortui

無(wú)符號(hào)長(zhǎng)整型:以u(píng)nsignedlong說(shuō)明,占4字節(jié)如unsignedlongui語(yǔ)言程序設(shè)計(jì)C3.4整型數(shù)據(jù)二、整型變量數(shù)據(jù)在存儲(chǔ)單元的存儲(chǔ)情況:以13為例語(yǔ)言程序設(shè)計(jì)C0000000000001101Int0000000000001101short00000000000000000000000000001101long符號(hào)位0000000000001101unsigned0000000000001101unsigned

short00000000000000000000000000001101unsigned

longIBMPC機(jī)器所對(duì)應(yīng)的不同形式整型數(shù)據(jù)的存儲(chǔ)范圍所占位數(shù)數(shù)的范圍int16-32768~32767即-215~(215-1)short[int]16-32768~32767即-215~(215-1)long[int]32-2147483648~2147483647即-231~(231-1)unsignedint160~65535即0~(216-1)unsignedshort160~65535即0~(216-1)unsignedlong320~4294967295即0~(232-1)3.4整型數(shù)據(jù)二、整型變量3整型變量的定義如inta,b;longunm,I,j;unsignedshortc,d;語(yǔ)言程序設(shè)計(jì)C例3.2整型變量的定義與使用

#include<stdio.h>

voidmain(){

inta,b,c,d;unsignedu;a=12;b=-24;u=10;

c=a+u;d=b+u;

printf(″a+u=%d,b+u=%d\n″,c,d);

}a+u=22,b+u=-14

三.整型常量的類型在-32768~+32767范圍內(nèi),認(rèn)為它是int型在-2147483638~+2147483647范圍內(nèi),則認(rèn)為它是為長(zhǎng)整型八進(jìn)制、十六進(jìn)制常量的類型數(shù)據(jù)根據(jù)數(shù)值的大小可以是整型、無(wú)符號(hào)整型(0-65535)、長(zhǎng)整型或無(wú)符號(hào)長(zhǎng)整型整數(shù)有后綴u或U,認(rèn)為是unsigned型整常量后面加一個(gè)字母l或L,則認(rèn)為是longint型常量(在嚴(yán)格要求類型匹配的場(chǎng)合有用,如函數(shù)參數(shù))語(yǔ)言程序設(shè)計(jì)C3.5實(shí)型數(shù)據(jù)一、實(shí)型常量1實(shí)數(shù)又稱浮點(diǎn)數(shù),在內(nèi)存中有兩種表現(xiàn)形式十進(jìn)制數(shù)形式如0.345,.345,345.0,0.0,0.,.0指數(shù)形式如3.45e3,3.45E3表示3.45*103

注意:e前后必須有數(shù)字,e后整數(shù)必須為整型數(shù)如03e3,3e3,3.e33ee33e0.32.類型:缺省為double型后綴f或F,表示float型;后綴l或L,表示longdouble型;語(yǔ)言程序設(shè)計(jì)C3.5實(shí)型數(shù)據(jù)一、實(shí)型常量二、實(shí)型變量(取值范圍與值的精度與機(jī)器有關(guān))單精度(float型)、雙精度(double型)長(zhǎng)雙精度型(longdouble)<>語(yǔ)言程序設(shè)計(jì)C類型位數(shù)數(shù)的范圍有效數(shù)字float32

10-38~10386~7位Double64

10-307~1030815~16位longdouble12810-4931~10493218~19位3.5實(shí)型數(shù)據(jù)三、實(shí)型數(shù)據(jù)的舍入誤差雖然實(shí)型數(shù)據(jù)的表示形式有兩種,但在內(nèi)存中均以指數(shù)形式存放語(yǔ)言程序設(shè)計(jì)C數(shù)符小數(shù)階符指數(shù)如果給的數(shù)據(jù)超過(guò)有效數(shù)字位數(shù),則被舍去,產(chǎn)生誤差例3.4浮點(diǎn)型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{floata,b;

a=123456.789e5;

b=a+20;

printf(“%f\n”,b);

}運(yùn)行結(jié)果:

123456788683.6字符型數(shù)據(jù)一、字符常量1、用單引號(hào)括起來(lái)的一個(gè)字符如‘a(chǎn)’,‘$’,‘0’2.轉(zhuǎn)義字符:特殊的字符常量,它們都以’\’開頭語(yǔ)言程序設(shè)計(jì)C\n換行\(zhòng)0表示空值\t橫向跳格\b退格\r回車\\反斜杠\’單引號(hào)\ddd1到3位八進(jìn)制數(shù)表示的字符(ASCII碼),如’\101’表示‘A’\xhh1到2位十六進(jìn)制數(shù)表示的字符(ASCII碼)如’\X41’表示‘A’格式控制符輸出字符3.6字符型數(shù)據(jù)二、字符變量用來(lái)存放字符,只能放一個(gè)字符。定義方法:charc1,c2;字符型變量的賦值方法c1=‘a(chǎn)’;c2=‘\101’

;c3=0xff;c4=‘\377’

;語(yǔ)言程序設(shè)計(jì)C3.6字符型數(shù)據(jù)三、字符數(shù)據(jù)的存儲(chǔ)將一個(gè)字符常量放到一個(gè)字符變量中,是將該字符的相應(yīng)的ASCII代碼放到存儲(chǔ)單元中。

(一個(gè)字節(jié))內(nèi)存中,c1,c2的存放形式:語(yǔ)言程序設(shè)計(jì)C例3.6向字符變量賦以整數(shù)。

#include<stdio.h>

voidmain()

{charc1,c2;

c1=’a’;

c2=‘b’;

printf(“%c%c\n”,c1,c2);

c1=97;

c2=98;

printf(“%c%c\n”,c1,c2);}c19701100001c29801100010AbAbc19701100001c197c201100001c19798c201100001c1970110001098c201100001c1973.6字符型數(shù)據(jù)三、字符數(shù)據(jù)的存儲(chǔ)2、字符數(shù)據(jù)和整型數(shù)據(jù)可以相互賦值3.

字符數(shù)據(jù)可以以字符的形式輸出,也可以用整型數(shù)形式輸出376對(duì)應(yīng)的二進(jìn)制數(shù)語(yǔ)言程序設(shè)計(jì)C例3.6

#include<stdio.h>

voidmain()

{intI;charc;

i=’a’;

c=97;

printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}例3.61

#include<stdio.h>

voidmain()

{charc;

c=‘\376’;

printf(“%c,%d\n”,c,c);}注意:VC把字符處理成帶符號(hào)的整數(shù)111111103.6字符型數(shù)據(jù)四、字符串常量1、字符串常量:用一對(duì)雙引號(hào)括起來(lái)的字符序列如”hello”,“1999”,“a”2.字符串結(jié)束標(biāo)記’\0’

每一個(gè)字符串常量結(jié)尾都有一個(gè)字符\0(一般是由系統(tǒng)加上去的)如”CHINA”在內(nèi)存中為‘a(chǎn)’“a”語(yǔ)言程序設(shè)計(jì)CCHINA\0aa\03.6字符型數(shù)據(jù)四、字符串常量1、字符串常量:用一對(duì)雙引號(hào)括起來(lái)的字符序列如”hello”,“1999”,“a”2.字符串結(jié)束標(biāo)記’\0’

每一個(gè)字符串常量結(jié)尾都有一個(gè)字符\0(一般是由系統(tǒng)加上去的)如”CHINA”在內(nèi)存中為a3.6字符型數(shù)據(jù)四、字符串常量1、字符串常量:用一對(duì)雙引號(hào)括起來(lái)的字符序列如”hello”,“1999”,“a”2.字符串結(jié)束標(biāo)記’\0’

每一個(gè)字符串常量結(jié)尾都有一個(gè)字符\0(一般是由系統(tǒng)加上去的)如”CHINA”在內(nèi)存中為a3.7變量賦初值在變量定義的同時(shí)設(shè)置初值,也稱為初始化如inta=3;

floatf=3.56;charc=‘a(chǎn)’;inta,b,c=5;

inta=3,b=3,c=3;(不能寫成∶inta=b=c=3;)3.8不同類型數(shù)據(jù)間的混合運(yùn)算整型、實(shí)型、字符型數(shù)據(jù)間可以混合運(yùn)算如:10+’a’+12.3-3.14*’x’是合法的運(yùn)算時(shí)不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算doublefloatlongunsignedintChar,short高低3.9算術(shù)運(yùn)算符和算術(shù)表達(dá)式一、C的運(yùn)算符(1)算術(shù)運(yùn)算符(+-*/%)(2)關(guān)系運(yùn)算符(><==>=<=?。剑?3)邏輯運(yùn)算符(?。Γ|)(4)位運(yùn)算符(<<>>~|∧&)(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符(?:)(7)逗號(hào)運(yùn)算符(,)(8)指針運(yùn)算符(*和&)(9)求字節(jié)數(shù)運(yùn)算符(sizeof)(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型))(11)分量運(yùn)算符(.->)(12)下標(biāo)運(yùn)算符([])(13)其他(如函數(shù)調(diào)用運(yùn)算符())二、算術(shù)運(yùn)算符和算數(shù)表達(dá)式1.基本的算術(shù)運(yùn)算符:+(加法運(yùn)算符,或正值運(yùn)算符。如:3+5、+3)-(減法運(yùn)算符,或負(fù)值運(yùn)算符。如:5-2、-3)*(乘法運(yùn)算符。如:3*5)2x,3(a+b)不合法/(除法運(yùn)算符。如:5/3,(a+b)/(x+y)[括號(hào)不能少]%(模運(yùn)算符,或稱求余運(yùn)算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。關(guān)于正負(fù)號(hào):只取決于第一個(gè)數(shù)符,如-7%4=-3;-7%-4=-3;7%-4=3

特殊情況:0%5=0;5%0=5;兩個(gè)整型數(shù)相除,其結(jié)果為取商的整數(shù)部分,小數(shù)部分自動(dòng)舍棄;除數(shù)、被除數(shù)有一個(gè)為負(fù)數(shù)時(shí),結(jié)果向0取整,-5/3=-1除數(shù)、被除數(shù)有一個(gè)為實(shí)數(shù)時(shí),結(jié)果為實(shí)型2.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子,稱為C算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等如3.14*r*rx+sqrt(0.25*y)/(abs(a+b)-3.6)運(yùn)算符的優(yōu)先級(jí)與結(jié)合性優(yōu)先級(jí):先*、/、%后+、-結(jié)合性:左結(jié)合,即表達(dá)式從左向右計(jì)算強(qiáng)制類型轉(zhuǎn)換可以用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將表達(dá)式轉(zhuǎn)換成所需類型形式:(類型名)表達(dá)式

(double)a將a轉(zhuǎn)換成double類型

(int)(x+y)將x+y的值轉(zhuǎn)換成整型不同于int(x)+y(float)(5%3)將5%3的值轉(zhuǎn)換成float型例3.8強(qiáng)制類型轉(zhuǎn)換。

#include<stdio.h>

voidmain()

floatx;

inti;

x=3.6;

i=(int)x;

printf("x=%f,i=%d\n",x,i);

運(yùn)行結(jié)果:

x=3.600000,i=3X值沒(méi)有發(fā)生改變?nèi)?、自增、自減運(yùn)算符++,--作用是使變量的值增1或減1,有兩種形式:++i,---i在計(jì)算時(shí)先改變變量i的值,再參與其它運(yùn)算i++,i--在計(jì)算時(shí)先參與其它運(yùn)算,再改變變量的值。注意點(diǎn):只能用于變量,而不能用于常量或表達(dá)式如:5++或(a+b)++為不合法的優(yōu)先級(jí)高于算術(shù)運(yùn)算符,結(jié)合方向自右向左如-i++相當(dāng)于-(i++)例3.8自增自減運(yùn)算#include<stdio.h>

voidmain()

inti=0,j;j=i++;printf("%d%d\n",i,j);i=0;j=++i;

printf("%d%d\n",i,j);

運(yùn)行結(jié)果:

1011區(qū)分:

j=i+1;j=++I;3.10賦值運(yùn)算符和賦值表達(dá)式一、賦值運(yùn)算符”=”

用法:變量=表達(dá)式作用:將表達(dá)式的值賦給變量(常量、變量是表達(dá)式的例外)

注意:與數(shù)學(xué)中的等式不同二、賦值結(jié)果和類型轉(zhuǎn)換實(shí)型數(shù)據(jù)賦值給整型數(shù)據(jù)時(shí),舍棄小數(shù)部分;將整型數(shù)據(jù)賦值給實(shí)型變量時(shí),數(shù)值不變,但數(shù)據(jù)以浮點(diǎn)數(shù)形式存儲(chǔ)到變量中;如:ints;floata;s=12;a=s;

這時(shí)a的值為12.00000長(zhǎng)度相同的有符號(hào)與無(wú)符號(hào)整數(shù)間,原樣賦值(但數(shù)值有時(shí)會(huì)有變化)例3.8自增自減運(yùn)算#include<stdio.h>

voidmain()

unsigneda;intb=-1;a=b;printf("%d-

%u\n",b,a);a=65534u;

b=a;

printf("%d-

%u\n",b,a);}1111111111111111b1111111111111111a1111111111111110a1111111111111110b運(yùn)行結(jié)果:

-165535-265534char,int,long等類型的轉(zhuǎn)換“短”數(shù)據(jù)賦給”長(zhǎng)”變量符號(hào)擴(kuò)展:若高位為1(負(fù)數(shù)),則變量高位字節(jié)補(bǔ)1;反之,補(bǔ)0例3.11#include<stdio.h>

voidmain()

charc;inti;c=43;i=c;printf(“i=%d\n",i);c=‘\376’;

i=c;

printf(“i=%d\n",i);}c0000000000101011I00101011c1111111111111110i11111110運(yùn)行結(jié)果:

i=43i=-2長(zhǎng)數(shù)據(jù)賦給短變量只將數(shù)據(jù)的低字節(jié)位原封不動(dòng)地送到變量中(數(shù)據(jù)有可能有差錯(cuò))例3.12#include<stdio.h>

voidmain()

inti;longL=6324232L;i=L;printf(“i=%d,L=%ld\n",i,L);}00000000011000001000000000001000L1000000000010000i三、復(fù)合的賦值運(yùn)算符在賦值符“=”之前加上其他運(yùn)算符,構(gòu)成復(fù)合的運(yùn)算符。+=,-=,*=,/=,%=,<<=,>>=

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論