第3章-C語言數(shù)據(jù)類型運算符和表達式課件_第1頁
第3章-C語言數(shù)據(jù)類型運算符和表達式課件_第2頁
第3章-C語言數(shù)據(jù)類型運算符和表達式課件_第3頁
第3章-C語言數(shù)據(jù)類型運算符和表達式課件_第4頁
第3章-C語言數(shù)據(jù)類型運算符和表達式課件_第5頁
已閱讀5頁,還剩177頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

教學要求:1.掌握C語言數(shù)據(jù)類型分類。2.掌握整型數(shù)據(jù)、實型數(shù)據(jù)、字符數(shù)據(jù)使用規(guī)則。3.掌握C語言常量、變量的使用。教學要求:內(nèi)容提要:3.1基本字符、標識符和關鍵字3.2基本數(shù)據(jù)類型3.3常量與變量3.4整型數(shù)據(jù)3.5實型數(shù)據(jù)3.6字符型數(shù)據(jù)內(nèi)容提要:3.1基本字符、標識符和關鍵字內(nèi)容提要:3.7變量賦初值

3.8各類數(shù)值型數(shù)據(jù)間的混合運算

3.9運算符和算術表達式

內(nèi)容提要:3.7變量賦初值3.1基本字符、標識符和關鍵字一、符號集(字符集)C語言的基本符號共有以下五種:(1)大寫字母A~Z(2)小寫字母a~z(3)阿拉伯數(shù)字0~9(4)下劃線_(5)標點符號和運算符3.1基本字符、標識符和關鍵字一、符號集(字符集)二、標識符標識符號常量、變量、函數(shù)、類型名、文件等的有效字符序列。標識符構成規(guī)則:(1)標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例:xy3_imaxECSEXA_to_B(合法)7xint#Nobadonereg-input(不合法)(2)在C語言中,大小寫字母不等效。a和A,I和i,Sum和sum,分別是兩個不同的標識符。(3)用戶自定義的標識符不能與保留字(關鍵字)同名。二、標識符標識符號常量、變量、函數(shù)、類型名、文件等的有效字符三、關鍵字(保留字)概念:就是具有特定含義的標識符,用戶不能用來作自定義標識符。C語言中的關鍵字較少,由ANSI標準推薦的關鍵字有32個。(1)與數(shù)據(jù)類型有關的(14個):charintfloatdoublesignedunsignedshortlongvoidstructuniontypedefenumsizeof(2)與存儲類別有關的:autoexternregisterstatic三、關鍵字(保留字)概念:就是具有特定含義的標識符,用戶不能三、關鍵字(續(xù))(3)

與程序控制結(jié)構有關的(12):dowhileforifelseswitchcasedefaultgotocontinuebreakreturn

注意:所有的關鍵字都有固定的意義,不能用作其它所有關鍵字都必須小寫。如else與ELSE表示不同的含義三、關鍵字(續(xù))(3)與程序控制結(jié)構有關的(12):3.2C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型

數(shù)據(jù)類型構造類型指針類型空類型(無值類型)

void枚舉類型enum數(shù)組類型結(jié)構類型struct聯(lián)合類型

union基本類型整型int字符型char實型(浮點型)單精度實型float雙精度實型double3.2C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型3.3常量與變量3.3.1常量和符號常量1、常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串‘a(chǎn)’,‘a(chǎn)b’,‘1232’3.3常量與變量3.3.1常量和符號常量整型102、符號常量用一個標識符代表一個常量定義方法#define標識符常量2、符號常量用一個標識符代表一個常量例3.1符號常量的使用

#definePI3.14159

#include<stdio.h>

voidmain()

{intr;

floats;

scanf(″%d″,&r);

s=PI*r*r;

printf(″area=%f\n″,s);

}說明:

程序中用#define命令行定義PI代表常量3.14,此后凡在本文件中出現(xiàn)的PI都代表3.14159,可以和常量一樣進行運算。符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。運行結(jié)果:

2area=12.566360說明:如再用賦值語句給PRICE賦值是錯的PI=3.14;/*錯誤,不能給符號常量賦值例3.1符號常量的使用

#definePI3.143.3常量與變量3.3.2變量概念:在程序運行期間,其值是可以改變的量。用標識符(變量名)來表示。變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),這就是變量的值。從變量中取值,實際上是通過變量名找到相應的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。變量的定義方法:類型符標識符3.3常量與變量3.3.2變量3.3常量與變量(續(xù))

變量命名的規(guī)定:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。

例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b

3.3常量與變量(續(xù))變量命名的規(guī)定:C語言規(guī)3.3常量與變量(續(xù))注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。

建議變量名的長度最好不要超過8個字符。見名知意。先定義,后使用。習慣上,符號常量用名用大寫,變量名用小寫,以示區(qū)別。3.3常量與變量(續(xù))注意:3.4整型數(shù)據(jù)一、整型常量的表示方法整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:

(1)十進制整數(shù)。

如:123,-456,4。(2)八進制整數(shù)。最高位必須用0作引導符。

如:0123表示八進制數(shù)123,等于十進制數(shù)83,-011表示八進制數(shù)-11,即十進制數(shù)-9。3.4整型數(shù)據(jù)一、整型常量的表示方法3.4整型數(shù)據(jù)(續(xù))(3)十六進制整數(shù)。以0x(0X)開頭的數(shù)是16進制數(shù)。

如:0x123,代表16進制數(shù)123,等于十進制數(shù)291。-0x12等于十進制數(shù)-10。

二、整型變量

(1)整型數(shù)據(jù)在內(nèi)存中的存放形式

數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。

如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/

3.4整型數(shù)據(jù)(續(xù))(3)十六進制整數(shù)。以0x(0X3.4整型數(shù)據(jù)(續(xù))注意:十進制數(shù)10的二進制形式為1010,TurboC2.0和TurboC++3.0為一個整型變量在內(nèi)存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個字節(jié))。數(shù)值是以補碼(complement)表示的。

3.4整型數(shù)據(jù)(續(xù))注意:3.4整型數(shù)據(jù)(續(xù))(2)整型變量的分類共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)

注意:括號表示其中的內(nèi)容是可選的.3.4整型數(shù)據(jù)(續(xù))(2)整型變量的分類共六種有符號3.4整型數(shù)據(jù)(續(xù))整數(shù)類型的有關數(shù)據(jù):

類型類型說明符長度數(shù)的范圍基本型int

2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1無符號整型unsigned2字節(jié)0~65535無符號短整型unsignedshort2字節(jié)0~65535無符號長整型unsignedlong4字節(jié)0~(232-1)3.4整型數(shù)據(jù)(續(xù))整數(shù)類型的有關數(shù)據(jù):3.4整型數(shù)據(jù)(續(xù))例如:整數(shù)13在內(nèi)存中實際存放的情況:3.4整型數(shù)據(jù)(續(xù))例如:整數(shù)13在內(nèi)存中實際存放3.4整型數(shù)據(jù)(續(xù))(3)整型變量的定義和使用C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。定義的一般形式:

類型說明符變量名1,變量名2,······;

例如:

inta,b;/*指定變量a、b為整型*/

unsignedshortc,d;/*指定變量c、d為無符號短整型*/

longe,f;/*指定變量e、f為長整型*/3.4整型數(shù)據(jù)(續(xù))(3)整型變量的定義和使用變量的定義和使用注意:(1)允許在一個類型說明符后,定義多個相同類型的變量。各變量名之間用逗號隔開;類型說明符與變量名之間至少用一個空格間隔。(2)最后一個變量名之后必須以“;”號結(jié)尾。(3)變量定義必須放在變量使用之前。變量的定義和使用注意:3.4整型數(shù)據(jù)(續(xù))【例】整型變量的定義與使用。#include<stdio.h>voidmain(){

int a,b,c;printf(”Pleaseinputtwonumbers:”);scanf(”%d,%d”,&a,&b);if(a>b) c=a;else c=b;printf(“Themaxnumberis:%d\n”,c);}3.4整型數(shù)據(jù)(續(xù))【例】整型變量的定義與使用。例:整型變量的定義與使用

#include<stdio.h>

voidmain()

{inta,b,c,d;/*指定a、b、c、d為整型變量*/

unsignedu;/*指定u為無符號整型變量*/

a=12;b=-24;u=10;

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

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

}說明:

可以看到不同種類的整型數(shù)據(jù)可以進行算術運算。

運行結(jié)果:

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

例:整型變量的定義與使用

#include<stdio.例:整型數(shù)據(jù)的溢出

#include<stdio.h>

voidmain()

{inta,b;

a=32767;

b=a+1;

printf(“%d,%d\n”,a,b);

}

說明:數(shù)值是以補碼表示的。一個整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運行結(jié)果:

32767,-32768例:整型數(shù)據(jù)的溢出

#include<stdio.h>3.4整型數(shù)據(jù)(續(xù))三、整型常量的類型

(1)一個整數(shù),如果其值在-32768~+32767范圍內(nèi),認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內(nèi),則認為它是為長整型。可以將它賦值給一個longint型變量。

3.4整型數(shù)據(jù)(續(xù))三、整型常量的類型3.4整型數(shù)據(jù)(續(xù))(3)如果所用的C版本(如TurboC)分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它的表數(shù)范圍與int型相同。因此一個int型的常量同時也是一個shortint型常量,可以賦給int型或shortint型變量。

3.4整型數(shù)據(jù)(續(xù))(3)如果所用的C版本(如Tu3.4整型數(shù)據(jù)(續(xù))(4)一個整常量后面加一個字母u或U,認為是unsignedint型。

如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補碼53191,然后按無符號數(shù)存儲。(5)在一個整常量后面加一個字母l或L,則認為是longint型常量。

3.4整型數(shù)據(jù)(續(xù))(4)一個整常量后面加一個字母3.5浮點型數(shù)據(jù)(實型數(shù)據(jù))3.5.1實型常量的表示方法兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e

3.5浮點型數(shù)據(jù)(實型數(shù)據(jù))3.5.1實型常量的表示實型二種表現(xiàn)形式:十進制形式:由數(shù)字和小數(shù)點組成;指數(shù)形式:由“十進制小數(shù)”

+“e(或E)”+“十進制數(shù)整數(shù)”三部分組成。例如:3.44.

.3

例如:12.5e-6表示12.5×10-6十進制小數(shù)e(或E)十進制整數(shù)注意:小數(shù)點不能單獨出現(xiàn);e或E的兩邊必須有數(shù),且其后面必須為整數(shù);

如:0.、.0應為:.

如:6E0.2e56E

實型二種表現(xiàn)形式:十進制形式:由數(shù)字和小數(shù)點組成;指數(shù)形式:3.5.2實型變量數(shù)據(jù)類型類型符占內(nèi)存(字節(jié))占內(nèi)存(位)數(shù)值范圍有效數(shù)字單精度float43210-37~10387雙精度double86410-307~1030816長雙精度longdouble1612810-4931~10493219實型變量的分類

實型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。3.5.2實型變量數(shù)據(jù)類型類型符占內(nèi)存(字節(jié))占內(nèi)存(位說明:C編譯系統(tǒng)通常把所有實型常數(shù)都被默認為double型。絕對值小于1的浮點數(shù),其小數(shù)點前面的零可以省略。TurboC默認格式輸出浮點數(shù),最多只保留小數(shù)點后6位。說明:C編譯系統(tǒng)通常把所有實型常數(shù)都被默認為double型。

3.5.3實型數(shù)據(jù)在內(nèi)存中的存放形式浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個實型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。3.5.3實型數(shù)據(jù)在內(nèi)存中的存放形式例3.4實型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{floata,b;

a=123456.789e5;

b=a+20;

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

}

說明:一個實型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。應當避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。運行結(jié)果:

12345678848.000000例3.4實型數(shù)據(jù)的舍入誤差

#include<stdio

3.6字符型數(shù)據(jù)

3.6.1字符常量用單引號包含的一個字符是字符型常量只能包含一個字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”3.6字符型數(shù)據(jù)3.6.1字符常量例‘a(chǎn)’,字符型常量簡稱字符常量

包括可視字符常量和轉(zhuǎn)義字符常量

1.可視字符ASCII基本字符集中包括94個可視字符和34個控制字符,直接用單引號括起來即為字符常量。例如:注意:(1)單引號不占存儲空間(2)C語言中,‘a(chǎn)’和a不同(3)單引號括起的大寫字母和小寫字母代表不不同的字符常量。如:‘a(chǎn)’和‘A’(4)單引號括起‘’也是字符常量,存儲的是空格的ASCII值32字符型常量簡稱字符常量

包括可視字符常量和轉(zhuǎn)義

2.轉(zhuǎn)義字符

ASCII中的控制字符是不可見字符,不能直接用單引號括起的形式表示。\n換行\(zhòng)t橫向跳格\r回車

在某些特定字符前加“\”,表示某種特殊的意義或控制動作。稱這種形式的字符為轉(zhuǎn)義字符。

說明:(1)轉(zhuǎn)義字符代表一個字符,在內(nèi)存中只占一個字節(jié)的存儲空間。(2)轉(zhuǎn)義字符‘\0’,表示字符串常量結(jié)束的標志符(3)\ddd

ddd表示1到3位八進制數(shù)字(4)\xhh

hh表示1到2位十六進制數(shù)字2.轉(zhuǎn)義字符ASCII中的控制字符是不可見字符,不

3.6字符型數(shù)據(jù)

3.6.2字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個字符變量在內(nèi)存中占一個字節(jié)。

3.6字符型數(shù)據(jù)3.6.2字符變量3.6字符型數(shù)據(jù)

3.6.3字符數(shù)據(jù)在內(nèi)存中的存儲形式一個字符常量存放到一個字符變量中,是將該字符的相應的ASCII代碼放到存儲單元中。使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:

一個字符數(shù)據(jù)既可以以字符形式輸出,也可以整數(shù)形式輸出。3.6字符型數(shù)據(jù)3.6.3字符數(shù)據(jù)在內(nèi)存中的存儲形例3.6向字符變量賦以整數(shù)。

#include<stdio.h>

voidmain()

{

charc1,c2;

c1=97;

c2=98;

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

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

說明:在第3和第4行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當于以下兩個賦值語句: c1=′a′;c2=′b′;因為’a’和’b’的ASCII碼為97和98運行結(jié)果:ab9798例3.6向字符變量賦以整數(shù)。

#include<std例3.7大小寫字母的轉(zhuǎn)換

#include<stdio.h>

voidmain()

{charc1,c2;

c1=’a’;

c2=’b’;

c1=c1-32;

c2=c2-32;

printf(“%c%c″,c1,c2);

說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進行算術運算。

運行結(jié)果:AB

例3.7大小寫字母的轉(zhuǎn)換

#include<stdi3.6字符型數(shù)據(jù)說明:如果在字符變量中存放一個ASCII碼為0~127間的字符,由于字節(jié)中最高位為0,因此用%d輸出字符變量時,輸出的是一個正整數(shù)。如果在字符變量中存放一個ASCII碼為128~255間的字符,由于在字節(jié)中最高位為1,用%d格式符輸出時,就會得到一個負整數(shù)。

3.6字符型數(shù)據(jù)說明:

3.6字符型數(shù)據(jù)3.6.4字符串常量字符串常量是一對雙撇號括起來的字符序列.合法的字符串常量:

“Howdoyoudo.”,“CHINA”,“a”,“$123.45”可以輸出一個字符串,如

printf(“Howdoyoudo.”);3.6字符型數(shù)據(jù)3.6.4字符串常量

3.6字符型數(shù)據(jù)

‘a’是字符常量,”a”是字符串常量,二者不同。如:假設c被指定為字符變量

:charc

c=’a’;c=”a”;c=”CHINA”;

結(jié)論:不能把一個字符串常量賦給一個字符變量。3.6字符型數(shù)據(jù)‘a’是字符常量,”a”是字符C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標志。

如:如果有一個字符串常量”CHINA”,實際上在內(nèi)存中是:CHINA\0

它占內(nèi)存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。

3.6字符型數(shù)據(jù)C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符如:如果有一3.6字符型數(shù)據(jù)注意:字符串常量首尾的雙引號是界定符‘a(chǎn)’和“a”所占存儲空間“123”和123不同3.6字符型數(shù)據(jù)注意:

3.7變量賦初值

(1)C語言允許在定義變量的同時使變量初始化如:inta=3;//指定a為整型變量,初值為3floatf=3.56;//指定f為浮點型變量,初值為3.56charc=‘a(chǎn)’;//指定c為字符變量,初值為‘a(chǎn)’

3.7變量賦初值

3.7變量賦初值

(2)可以使被定義的變量的一部分賦初值。如:

inta,b,c=5;表示指定a、b、c為整型變量,但只對c初始化,c的初值為5。(3)如果對幾個變量賦以同一個初值,應寫成:inta=3,b=3,c=3;

表示a、b、c的初值都是3。不能寫成∶

inta=b=c=3;

注意:初始化不是在編譯階段完成的而是在程序運行時執(zhí)行本函數(shù)時賦初值的,相當于有一個賦值語句。

3.7變量賦初值(2)可以使被定義的變量的一部分賦初

3.7各類數(shù)值型數(shù)據(jù)間的混合運算

混合運算:整型(包括int,short,long)、浮點型(包括float,double)可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算.說明:

這種類型轉(zhuǎn)換是由系統(tǒng)自動進行的??傏厔荩捍鎯﹂L度較短存儲長度較長3.7各類數(shù)值型數(shù)據(jù)間的混合運算混合運算:整型(包括例:intx=2;floaty=1.6;charc='A';c+x*y=?65(int)2(int)1.6(double)3.2(double)68.2(double)例:intx=2;floaty=1.6;charc='2、數(shù)據(jù)類型間的強制轉(zhuǎn)換

(要轉(zhuǎn)換成的數(shù)據(jù)類型)(被轉(zhuǎn)換的表達式)注意:形式:強制類型轉(zhuǎn)換時,得到所需類型的值,原來變量的類型和值都不變。例:inta=2,b=5;floatx=4.4;(float)b/a2.5(int)x/a2例:(double)a將a轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整型(float)(5%3)將5%3的值轉(zhuǎn)換成float型2、數(shù)據(jù)類型間的強制轉(zhuǎn)換(要轉(zhuǎn)換2、數(shù)據(jù)類型間的強制轉(zhuǎn)換注意:強制類型轉(zhuǎn)換形式中的表達式一定要用括號括起來。否則強制轉(zhuǎn)換僅對強制轉(zhuǎn)換運算符的變量進行類型轉(zhuǎn)換。例如:(int)(3.5+6.7)+8(int)3.5+82、數(shù)據(jù)類型間的強制轉(zhuǎn)換注意:

3.8算術運算符和算術表達式C的運算符有以下幾類:(1)算術運算符(+-*/%)(2)關系運算符(><==>=<=!=)(3)邏輯運算符(?。Γ|)(4)位運算符(<<>>~|∧&)(5)賦值運算符(=及其擴展賦值運算符)(6)條件運算符(?:)(7)逗號運算符(,)(8)指針運算符(*和&)3.8算術運算符和算術表達式C的運算符有以下幾類

3.8.1算術運算符和算術表達式1.基本的算術運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5)/(除法運算符。如:5/3)%(模運算符,或稱求余運算符,%兩側(cè)均應為整型數(shù)據(jù),如:7%4的值為3)。3.8.1算術運算符和算術表達式1.基本的算術運算符

3.8.1算術運算符和算術表達式2.算術表達式和運算符的優(yōu)先級與結(jié)合性

用算術運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術表達式。運算對象包括常量、變量、函數(shù)等。

例如:a*b/c-1.5+′a′是一個合法的表達式3.8.1算術運算符和算術表達式2.算術表達式和運C語言規(guī)定了運算符的優(yōu)先級和結(jié)合性。在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。C規(guī)定了各種運算符的結(jié)合方向(結(jié)合性)算術運算符的結(jié)合方向為“自左至右”,即先左后右。

3.8.1算術運算符和算術表達式3.8.1算術運算符和算術表達式

3.8.1算術運算符和算術表達式3.

自增、自減運算符

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

3.8.1算術運算符和算術表達式3.自增、自減運算符

3.8.1算術運算符和算術表達式i++與++i的區(qū)別:

++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例如:如果i的值為3①j=++i;i的值先變成4,再賦給j,j的值均為4②j=i++;先將i的值3賦給j,j的值為3,然后i變?yōu)椋?.8.1算術運算符和算術表達式i++與++i的區(qū)別

3.8.1算術運算符和算術表達式注意:

(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達式,

(2)++和--的結(jié)合方向是“自右至左”。

自增(減)運算符常用于循環(huán)語句中使循環(huán)變量自動加1。也用于指針變量,使指針指向下一個地址。

3.8.1算術運算符和算術表達式注意:自增(減main(){ inta=5,b=6; inti,j,m,n;

i=++a; j=--b; m=a++;

n=b--; printf(“Thevaluesofiandjare:\n”);

printf(“i=%d,j=%d\n”,i,j);

printf(“Thevaluesofmandnare:\n”);

printf(“m=%d,n=%d\n”,m,n);printf(“Thevaluesofaandbare:\n”);

printf(“a=%d,b=%d\n”,a,b);}main()3.8.2賦值運算符和賦值表達式1、賦值運算符=(數(shù)學上的等號)功能:將一個表達式的值賦給一個變量。例如:a=5;ave=(a+b)/10;注意:與數(shù)學中的等式不同。

用法:變量=表達式3.8.2賦值運算符和賦值表達式1、賦值運算符=(數(shù)學2、復合賦值運算符*=、/=、%=、+=、-=、<<=、>>=、&=、Λ=、|=共10個由賦值運算符與算術、位移、位邏輯運算符組成。復合運算符是一個運算符,但功能上,是兩個運算符功能的組合。a+=b相當于a=a+ba*=b+c相當于a=a*(b+c)a=2;a+=a*=a;a=8;2、復合賦值運算符*=、/=、%=、+=、-=、<<=、>>注意:如果是包含若干項的表達式,則相當于它有括號。如:

①x%=y+3

②x%=(y+3)|__↑

③x=x%(y+3)(不要錯寫成x=x%y+3)

2、復合賦值運算符(續(xù))注意:如果是包含若干項的表達式,則相當于它有2、復合賦值運3、賦值表達式用賦值運算符將變量和表達式連接起來的式子形式:<變量>=<表達式>求值規(guī)則:將“=”右邊表達式的值賦給左邊的變量。結(jié)合性:自右至左3、賦值表達式用賦值運算符將變量和表達式連接起來的式子形式:3、賦值表達式

對賦值表達式求解的過程是:①求賦值運算符右側(cè)的“表達式”的值;②賦給賦值運算符左側(cè)的變量。例如:賦值表達式“a=3*5”的值為15,執(zhí)行表達式后,變量a的值也是15。

注意:一個表達式應該有一個值

3、賦值表達式對賦值表達式求解的過程是:注意:一個3、賦值表達式

賦值表達式中的“表達式”,又可以是一個賦值表達式。例如:a=(b=5)

分析:括弧內(nèi)的“b=5”是一個賦值表達式,它的值等于5。執(zhí)行表達式“a=(b=5)”相當于執(zhí)行“b=5”和“a=b”兩個賦值表達式。賦值運算符按照“自右而左”的結(jié)合順序,因此,“(b=5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等價。3、賦值表達式賦值表達式中的“表達式”,又可以是3、賦值表達式

請分析下面的賦值表達式∶(a=3*5)=4*3分析:先執(zhí)行括弧內(nèi)的運算,將15賦給a,然后執(zhí)行4*3的運算,得12,再把12賦給a。最后a的值為12,整個表達式的值為12。可以看到∶(a=3*5)出現(xiàn)在賦值運算符的左側(cè),因此賦值表達式(a=3*5)是左值

注意:在對賦值表達式(a=3*5)求解后,變量a得到值15執(zhí)行(a=3*5)=4*3時,實際上是將4*3的積12賦給變量a,而不是賦給3*5。不能寫成:a=3*5=4*33、賦值表達式請分析下面的賦值表達式∶(a=3*5)3、賦值表達式

賦值表達式也可以包含復合的賦值運算符。如:a+=a-=a*a分析:此賦值表達式的求解步驟如下∶①先進行“a-=a*a”的運算,它相當于a=a-a*a,a的值為12-144=-132。②再進行“a+=-132”的運算,相當于a=a+(-132),a的值為-132-132=-264。3、賦值表達式賦值表達式也可以包含復合的賦值運算符。4、賦值轉(zhuǎn)換在賦值時,將賦值符右邊值的類型轉(zhuǎn)換成與其左邊變量類型一致的類型。幾種情況:(1)實型整型(字符型)取整數(shù)部分,去掉小數(shù)部分(2)整型、字符型實型補足有效位floatf=23;23.00000(7位)doublef='A';65.00000000000000(16位)4、賦值轉(zhuǎn)換在賦值時,將賦值符右邊值的類型轉(zhuǎn)換成與其左邊變量(3)對char、int、short、long、unsigned型數(shù)據(jù)賦值符右邊數(shù)據(jù)(a位)賦值符左邊變量(b位)★a=b原樣照賦★a>b截斷高a-b位,送低b位★a<b無符號數(shù)據(jù)或正數(shù)有符號數(shù)據(jù)高a-b位全補0有符號變量,符號擴展符號擴展符號位為0,剩余的高位補0符號位為1,剩余的高位補1(3)對char、int、short、long、unsig

4、賦值轉(zhuǎn)換(續(xù))例如:將一個int、short、long型數(shù)據(jù)賦給一個char型變量時,只將其低8位原封不動地送到char型變量(即截斷)。(“長”數(shù)據(jù)賦給“短”變量)例如:inti=289;charc=′a′;c=i;c的值為33,如果用“%c”輸出c,將得到字符“!”!的ASCII碼為33。

賦值情況:4、賦值轉(zhuǎn)換(續(xù))例如:將一個int、short、lon

4、賦值轉(zhuǎn)換(續(xù))例如:inta;longb=65536;a=b;

賦值情況如下

:(“長”數(shù)據(jù)賦給“短”變量)結(jié)果:賦值后a值為0。4、賦值轉(zhuǎn)換(續(xù))例如:inta;longb=655第一種情況:低位對應、高位補零(“短”數(shù)據(jù)賦給“長”變量)若所用系統(tǒng)將字符處理為unsignedchar型,則將字符的8位放到int低8位,高8位補零。例如:將字符‘\376’賦給int型變量i第二種情況:符號擴展(“短”數(shù)據(jù)賦給“長”變量)

若所用系統(tǒng)(如TurboC++)將字符處理為帶符號(signedchar)時,若字符最高位為0,則整型變量高8位補0;若字符最高位為1,則高8位全補1。這稱為“符號擴展”,這樣做的目的是使數(shù)值保持不變,如變量c(字符‘\376’)以整數(shù)形式輸出為-2,i的值也是-2。第一種情況:低位對應、高位補零第二種情況:符號擴展(“將帶符號的整型數(shù)據(jù)(int型)賦給long型變量時,要進行符號擴展,將整型數(shù)的16位送到long型低16位中:(“短”數(shù)據(jù)賦給“長”變量)如果int型數(shù)據(jù)為正值(符號位為0),則long型變量的高16位補0;如果int型變量為負值(符號位為1),則long型變量的高16位補1,以保持數(shù)值不改變。反之,若將一個long型數(shù)據(jù)賦給一個int型變量,只將long型數(shù)據(jù)中低16位原封不動地送到整型變量(即截斷)。(“長”數(shù)據(jù)賦給“短”變量)4、賦值轉(zhuǎn)換(續(xù))將帶符號的整型數(shù)據(jù)(int型)賦給long型例:有符號數(shù)據(jù)傳送給無符號變量。

#include<stdio.h>

voidmain()

{unsigneda;

intb=-1;

a=b;

printf(″%u\n″,a);

說明:“%u”是輸出無符號數(shù)時所用的格式符。如果b為正值,且在0~32767之間,則賦值后數(shù)值不變。運行結(jié)果:65535

例:有符號數(shù)據(jù)傳送給無符號變量。

#include

3.8.6逗號運算符和逗號表達式逗號運算符:將兩個表達式連接起來,又稱為“順序求值運算符”

如:3+5,6+8

一般形式:

表達式1,表達式2求解過程:

先求解表達式1,再求解表達式2。整個逗號表達式的值是表達式2的值。

逗號表達式的值為143.8.6逗號運算符和逗號表達式逗號運算符:將兩個表達

3.8.6逗號運算符和逗號表達式例:逗號表達式a=3*5,a*4

分析:賦值運算符的優(yōu)先級別高于逗號運算符,因此應先求解a=3*5。a的值為15,然后求解a*4,得60。整個逗號表達式的值為60。

一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式如:(a=3*5,a*4),a+5分析:

a+5先計算出a的值等于15,再進行a*4的運算得60(但a值未變,仍為15),再進行a+5得20,即整個表達式的值為20。3.8.6逗號運算符和逗號表達式例:逗號表達式a=3*

3.8.6逗號運算符和逗號表達式逗號表達式的一般形式可以擴展為

表達式1,表達式2,表達式3,……,表達式n它的值為表達式n的值。逗號運算符是所有運算符中級別最低的例:①x=(a=3,6*3)②x=a=3,6*3賦值表達式,將一個逗號表達式的值賦給x,x的值等于18逗號表達式,包括一個賦值表達式和一個算術表達式,x的值為3,整個逗號表達式的值為18。

3.8.6逗號運算符和逗號表達式逗號表達式的

3.8.6逗號運算符和逗號表達式注意:并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。例如函數(shù)參數(shù)也是用逗號來間隔的。

如:printf(“%d,%d,%d”,a,b,c);“a,b,c”并不是一個逗號表達式,它是printf函數(shù)的3個參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c)

“(a,b,c)”是一個逗號表達式,它的值等于c的值。3.8.6逗號運算符和逗號表達式注意:并不是任何地方3.8.3關系運算符和關系表達式關系運算:比較運算,比較兩個操作數(shù),看是否滿足給定的關系。1)關系運算符<:小于,5<3,3<5<=:小于等于,5<=3,3<=5,與數(shù)學上(≤)不同>:大于,5>3,3>5>=:大于等于,5>=3,3>=5,與數(shù)學上(≥)不同==:等于,5==3,與數(shù)學上(=)不同!=:不等于,5!=3,與數(shù)學上(≠)不同3.8.3關系運算符和關系表達式關系運算:比較運算,比較C語言中,真:非0值;假:0值

2)關系表達式用關系運算符將表達式連接起來的式子優(yōu)先級<

<=>>=高低==!=結(jié)合方向:自左向右表達式的值關系成立,即為真,結(jié)果為1;關系不成立,即為假,結(jié)果為0;算術運算符高低例判斷下列關系表達式的結(jié)果:(a=2*2)==2X=(1+1)==28<=101!=2C語言中,真:非0值;假:0值2)關系表達式用關系運算符3.8.4邏輯運算符和邏輯表達式1)邏輯運算符?。哼壿嫹牵辉\算符運算規(guī)則:取反,真假,假真&&:邏輯與。又稱邏輯乘。運算規(guī)則:兩個操作數(shù)均為真,結(jié)果為真。||:邏輯或。又稱邏輯加。運算規(guī)則:只要兩個操作數(shù)有一個為真,結(jié)果為真。3.8.4邏輯運算符和邏輯表達式1)邏輯運算符?。哼壿嫹?)邏輯量或邏輯表達式的值非0值:真0值:假整型實型字符型指針類型00.0\0NULL2)邏輯量或邏輯表達式的值非0值:真0值:假整型03)邏輯表達式用邏輯運算符將表達式連接起來的式子。優(yōu)先級關系運算符高低&&邏輯與算術運算符高低!邏輯非高低高低||邏輯或結(jié)合性:!:自右向左&&、||:自左向右3)邏輯表達式用邏輯運算符將表達式連接起來的式子。優(yōu)先級關系例:inta=5;floatb=3.5;!a0!b0a&&b1a||b1

!a&&!b0注意:在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行并運算的,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。例:inta=5;floatb=3.5;!a0!b0a例:a=0;b=1;c=2;d=a++&&b++&&--c;d=(a++)&&(b++)&&(--c);運算結(jié)果:d=0,a=1,b=1,c=24)a&&b&&c求解方法:只有a為真(非0),才需要判斷b的值,只有a和b都為真,才需要判斷c的值。只要a為假,就不必判斷b和c,運算立即中止。5)a||b||c求解方法:只要a為真(非0),就不必判斷b和c;只有a為假,才判斷b;a和b都為假,才判斷c。例:a=0;b=1;c=2;d=a++||b++||--c;

d=(a++)||(b++)||(--c);

運算結(jié)果:d=1,a=1,b=2,c=2

例:a=0;b=1;c=2;d=a++&&b++&&-3.8.5條件運算符與條件表達式有兩個符號:?、:,它與三個操作數(shù)組成三元運算。一般形式:<表達式1>?<表達式2>:<表達式3>求值規(guī)則和表達式的值:求解表達式1真(非0)求解表達式2假(0)求解表達式3表達式的值優(yōu)先級:邏輯>條件>賦值結(jié)合性:自右至左例:(1)intmax,a=5;b=3;max=a>b?a:b(2)--a==b++?a++:b++(3)y=x>10?x/10:x>0?x:-x;

結(jié)果:(1)max=5,a=5,b=3(2)表達式=4,a=4,b=5(3)若x=10,則y=103.8.5條件運算符與條件表達式有兩個符號:?、:,它與三3.8.7其他運算符及其運算

“&”和“*”“&”運算符返回一個操作數(shù)地址的操作符“&”(取地址)運算符的運算對象只能是變量,它的運算結(jié)果是變量的存儲地址。“&”作為取地址運算符時的一般形式為:&變量名例如:int a;charch1;3.8.7其他運算符及其運算“&”和“*小結(jié):基本數(shù)據(jù)類型運算符和表達式小結(jié):基本數(shù)據(jù)類型

小結(jié):數(shù)據(jù)類型構造類型指針類型空類型(無值類型)

void枚舉類型enum數(shù)組類型結(jié)構類型struct聯(lián)合類型

union基本類型整型int字符型char實型(浮點型)單精度實型float雙精度實型double小結(jié):數(shù)據(jù)類型構造類型指針類型空類型(無值類型)vo作業(yè):P42.2.1,2.2,2.3,2.5,2.6,2.7,2.8,2.10作業(yè):P42.教學要求:1.掌握C語言數(shù)據(jù)類型分類。2.掌握整型數(shù)據(jù)、實型數(shù)據(jù)、字符數(shù)據(jù)使用規(guī)則。3.掌握C語言常量、變量的使用。教學要求:內(nèi)容提要:3.1基本字符、標識符和關鍵字3.2基本數(shù)據(jù)類型3.3常量與變量3.4整型數(shù)據(jù)3.5實型數(shù)據(jù)3.6字符型數(shù)據(jù)內(nèi)容提要:3.1基本字符、標識符和關鍵字內(nèi)容提要:3.7變量賦初值

3.8各類數(shù)值型數(shù)據(jù)間的混合運算

3.9運算符和算術表達式

內(nèi)容提要:3.7變量賦初值3.1基本字符、標識符和關鍵字一、符號集(字符集)C語言的基本符號共有以下五種:(1)大寫字母A~Z(2)小寫字母a~z(3)阿拉伯數(shù)字0~9(4)下劃線_(5)標點符號和運算符3.1基本字符、標識符和關鍵字一、符號集(字符集)二、標識符標識符號常量、變量、函數(shù)、類型名、文件等的有效字符序列。標識符構成規(guī)則:(1)標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例:xy3_imaxECSEXA_to_B(合法)7xint#Nobadonereg-input(不合法)(2)在C語言中,大小寫字母不等效。a和A,I和i,Sum和sum,分別是兩個不同的標識符。(3)用戶自定義的標識符不能與保留字(關鍵字)同名。二、標識符標識符號常量、變量、函數(shù)、類型名、文件等的有效字符三、關鍵字(保留字)概念:就是具有特定含義的標識符,用戶不能用來作自定義標識符。C語言中的關鍵字較少,由ANSI標準推薦的關鍵字有32個。(1)與數(shù)據(jù)類型有關的(14個):charintfloatdoublesignedunsignedshortlongvoidstructuniontypedefenumsizeof(2)與存儲類別有關的:autoexternregisterstatic三、關鍵字(保留字)概念:就是具有特定含義的標識符,用戶不能三、關鍵字(續(xù))(3)

與程序控制結(jié)構有關的(12):dowhileforifelseswitchcasedefaultgotocontinuebreakreturn

注意:所有的關鍵字都有固定的意義,不能用作其它所有關鍵字都必須小寫。如else與ELSE表示不同的含義三、關鍵字(續(xù))(3)與程序控制結(jié)構有關的(12):3.2C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型

數(shù)據(jù)類型構造類型指針類型空類型(無值類型)

void枚舉類型enum數(shù)組類型結(jié)構類型struct聯(lián)合類型

union基本類型整型int字符型char實型(浮點型)單精度實型float雙精度實型double3.2C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型3.3常量與變量3.3.1常量和符號常量1、常量在程序運行過程中,其值不能被改變的量稱為常量常量區(qū)分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串‘a(chǎn)’,‘a(chǎn)b’,‘1232’3.3常量與變量3.3.1常量和符號常量整型102、符號常量用一個標識符代表一個常量定義方法#define標識符常量2、符號常量用一個標識符代表一個常量例3.1符號常量的使用

#definePI3.14159

#include<stdio.h>

voidmain()

{intr;

floats;

scanf(″%d″,&r);

s=PI*r*r;

printf(″area=%f\n″,s);

}說明:

程序中用#define命令行定義PI代表常量3.14,此后凡在本文件中出現(xiàn)的PI都代表3.14159,可以和常量一樣進行運算。符號常量:用一個標識符代表一個常量。符號常量的值在其作用域內(nèi)不能改變,也不能再被賦值。運行結(jié)果:

2area=12.566360說明:如再用賦值語句給PRICE賦值是錯的PI=3.14;/*錯誤,不能給符號常量賦值例3.1符號常量的使用

#definePI3.143.3常量與變量3.3.2變量概念:在程序運行期間,其值是可以改變的量。用標識符(變量名)來表示。變量代表內(nèi)存中具有特定屬性的一個存儲單元,它用來存放數(shù)據(jù),這就是變量的值。從變量中取值,實際上是通過變量名找到相應的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。變量的定義方法:類型符標識符3.3常量與變量3.3.2變量3.3常量與變量(續(xù))

變量命名的規(guī)定:C語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。

例:sum,_total,month,Student_name,lotus_1_2_3,BASIC,li_lingM.D.John,¥123,3D64,a>b

3.3常量與變量(續(xù))變量命名的規(guī)定:C語言規(guī)3.3常量與變量(續(xù))注意:編譯系統(tǒng)將大寫字母和小寫字母認為是兩個不同的字符。

建議變量名的長度最好不要超過8個字符。見名知意。先定義,后使用。習慣上,符號常量用名用大寫,變量名用小寫,以示區(qū)別。3.3常量與變量(續(xù))注意:3.4整型數(shù)據(jù)一、整型常量的表示方法整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:

(1)十進制整數(shù)。

如:123,-456,4。(2)八進制整數(shù)。最高位必須用0作引導符。

如:0123表示八進制數(shù)123,等于十進制數(shù)83,-011表示八進制數(shù)-11,即十進制數(shù)-9。3.4整型數(shù)據(jù)一、整型常量的表示方法3.4整型數(shù)據(jù)(續(xù))(3)十六進制整數(shù)。以0x(0X)開頭的數(shù)是16進制數(shù)。

如:0x123,代表16進制數(shù)123,等于十進制數(shù)291。-0x12等于十進制數(shù)-10。

二、整型變量

(1)整型數(shù)據(jù)在內(nèi)存中的存放形式

數(shù)據(jù)在內(nèi)存中是以二進制形式存放的。

如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/

3.4整型數(shù)據(jù)(續(xù))(3)十六進制整數(shù)。以0x(0X3.4整型數(shù)據(jù)(續(xù))注意:十進制數(shù)10的二進制形式為1010,TurboC2.0和TurboC++3.0為一個整型變量在內(nèi)存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個字節(jié))。數(shù)值是以補碼(complement)表示的。

3.4整型數(shù)據(jù)(續(xù))注意:3.4整型數(shù)據(jù)(續(xù))(2)整型變量的分類共六種有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)

注意:括號表示其中的內(nèi)容是可選的.3.4整型數(shù)據(jù)(續(xù))(2)整型變量的分類共六種有符號3.4整型數(shù)據(jù)(續(xù))整數(shù)類型的有關數(shù)據(jù):

類型類型說明符長度數(shù)的范圍基本型int

2字節(jié)-32768~32767短整型short2字節(jié)-215~215-1長整型long4字節(jié)-231~231-1無符號整型unsigned2字節(jié)0~65535無符號短整型unsignedshort2字節(jié)0~65535無符號長整型unsignedlong4字節(jié)0~(232-1)3.4整型數(shù)據(jù)(續(xù))整數(shù)類型的有關數(shù)據(jù):3.4整型數(shù)據(jù)(續(xù))例如:整數(shù)13在內(nèi)存中實際存放的情況:3.4整型數(shù)據(jù)(續(xù))例如:整數(shù)13在內(nèi)存中實際存放3.4整型數(shù)據(jù)(續(xù))(3)整型變量的定義和使用C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。定義的一般形式:

類型說明符變量名1,變量名2,······;

例如:

inta,b;/*指定變量a、b為整型*/

unsignedshortc,d;/*指定變量c、d為無符號短整型*/

longe,f;/*指定變量e、f為長整型*/3.4整型數(shù)據(jù)(續(xù))(3)整型變量的定義和使用變量的定義和使用注意:(1)允許在一個類型說明符后,定義多個相同類型的變量。各變量名之間用逗號隔開;類型說明符與變量名之間至少用一個空格間隔。(2)最后一個變量名之后必須以“;”號結(jié)尾。(3)變量定義必須放在變量使用之前。變量的定義和使用注意:3.4整型數(shù)據(jù)(續(xù))【例】整型變量的定義與使用。#include<stdio.h>voidmain(){

int a,b,c;printf(”Pleaseinputtwonumbers:”);scanf(”%d,%d”,&a,&b);if(a>b) c=a;else c=b;printf(“Themaxnumberis:%d\n”,c);}3.4整型數(shù)據(jù)(續(xù))【例】整型變量的定義與使用。例:整型變量的定義與使用

#include<stdio.h>

voidmain()

{inta,b,c,d;/*指定a、b、c、d為整型變量*/

unsignedu;/*指定u為無符號整型變量*/

a=12;b=-24;u=10;

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

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

}說明:

可以看到不同種類的整型數(shù)據(jù)可以進行算術運算。

運行結(jié)果:

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

例:整型變量的定義與使用

#include<stdio.例:整型數(shù)據(jù)的溢出

#include<stdio.h>

voidmain()

{inta,b;

a=32767;

b=a+1;

printf(“%d,%d\n”,a,b);

}

說明:數(shù)值是以補碼表示的。一個整型變量只能容納-32768~32767范圍內(nèi)的數(shù),無法表示大于32767或小于-32768的數(shù)。遇此情況就發(fā)生“溢出”。運行結(jié)果:

32767,-32768例:整型數(shù)據(jù)的溢出

#include<stdio.h>3.4整型數(shù)據(jù)(續(xù))三、整型常量的類型

(1)一個整數(shù),如果其值在-32768~+32767范圍內(nèi),認為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483637~+2147483647范圍內(nèi),則認為它是為長整型??梢詫⑺x值給一個longint型變量。

3.4整型數(shù)據(jù)(續(xù))三、整型常量的類型3.4整型數(shù)據(jù)(續(xù))(3)如果所用的C版本(如TurboC)分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它的表數(shù)范圍與int型相同。因此一個int型的常量同時也是一個shortint型常量,可以賦給int型或shortint型變量。

3.4整型數(shù)據(jù)(續(xù))(3)如果所用的C版本(如Tu3.4整型數(shù)據(jù)(續(xù))(4)一個整常量后面加一個字母u或U,認為是unsignedint型。

如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。如果寫成-12345u,則先將-12345轉(zhuǎn)換成其補碼53191,然后按無符號數(shù)存儲。(5)在一個整常量后面加一個字母l或L,則認為是longint型常量。

3.4整型數(shù)據(jù)(續(xù))(4)一個整常量后面加一個字母3.5浮點型數(shù)據(jù)(實型數(shù)據(jù))3.5.1實型常量的表示方法兩種表示形式小數(shù)指數(shù)0.1233e-3注意:字母e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)1e3、1.8e-3、-123e-6、-.1e-3e3、2.1e3.5、.e3、e

3.5浮點型數(shù)據(jù)(實型數(shù)據(jù))3.5.1實型常量的表示實型二種表現(xiàn)形式:十進制形式:由數(shù)字和小數(shù)點組成;指數(shù)形式:由“十進制小數(shù)”

+“e(或E)”+“十進制數(shù)整數(shù)”三部分組成。例如:3.44.

.3

例如:12.5e-6表示12.5×10-6十進制小數(shù)e(或E)十進制整數(shù)注意:小數(shù)點不能單獨出現(xiàn);e或E的兩邊必須有數(shù),且其后面必須為整數(shù);

如:0.、.0應為:.

如:6E0.2e56E

實型二種表現(xiàn)形式:十進制形式:由數(shù)字和小數(shù)點組成;指數(shù)形式:3.5.2實型變量數(shù)據(jù)類型類型符占內(nèi)存(字節(jié))占內(nèi)存(位)數(shù)值范圍有效數(shù)字單精度float43210-37~10387雙精度double86410-307~1030816長雙精度longdouble1612810-4931~10493219實型變量的分類

實型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。3.5.2實型變量數(shù)據(jù)類型類型符占內(nèi)存(字節(jié))占內(nèi)存(位說明:C編譯系統(tǒng)通常把所有實型常數(shù)都被默認為double型。絕對值小于1的浮點數(shù),其小數(shù)點前面的零可以省略。TurboC默認格式輸出浮點數(shù),最多只保留小數(shù)點后6位。說明:C編譯系統(tǒng)通常把所有實型常數(shù)都被默認為double型。

3.5.3實型數(shù)據(jù)在內(nèi)存中的存放形式浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個實型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。3.5.3實型數(shù)據(jù)在內(nèi)存中的存放形式例3.4實型數(shù)據(jù)的舍入誤差

#include<stdio.h>

voidmain()

{floata,b;

a=123456.789e5;

b=a+20;

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

}

說明:一個實型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準確地表示該數(shù)。應當避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù)。運行結(jié)果:

12345678848.000000例3.4實型數(shù)據(jù)的舍入誤差

#include<stdio

3.6字符型數(shù)據(jù)

3.6.1字符常量用單引號包含的一個字符是字符型常量只能包含一個字符例‘a(chǎn)’,’A’,‘1’‘a(chǎn)bc’、“a”3.6字符型數(shù)據(jù)3.6.1字符常量例‘a(chǎn)’,字符型常量簡稱字符常量

包括可視字符常量和轉(zhuǎn)義字符常量

1.可視字符ASCII基本字符集中包括94個可視字符和34個控制字符,直接用單引號括起來即為字符常量。例如:注意:(1)單引號不占存儲空間(2)C語言中,‘a(chǎn)’和a不同(3)單引號括起的大寫字母和小寫字母代表不不同的字符常量。如:‘a(chǎn)’和‘A’(4)單引號括起‘’也是字符常量,存儲的是空格的ASCII值32字符型常量簡稱字符常量

包括可視字符常量和轉(zhuǎn)義

2.轉(zhuǎn)義字符

ASCII中的控制字符是不可見字符,不能直接用單引號括起的形式表示。\n換行\(zhòng)t橫向跳格\r回車

在某些特定字符前加“\”,表示某種特殊的意義或控制動作。稱這種形式的字符為轉(zhuǎn)義字符。

說明:(1)轉(zhuǎn)義字符代表一個字符,在內(nèi)存中只占一個字節(jié)的存儲空間。(2)轉(zhuǎn)義字符‘\0’,表示字符串常量結(jié)束的標志符(3)\ddd

ddd表示1到3位八進制數(shù)字(4)\xhh

hh表示1到2位十六進制數(shù)字2.轉(zhuǎn)義字符ASCII中的控制字符是不可見字符,不

3.6字符型數(shù)據(jù)

3.6.2字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:charc1,c2;在本函數(shù)中可以用下面語句對c1,c2賦值:c1=‘a(chǎn)’;c2=‘b’;一個字符變量在內(nèi)存中占一個字節(jié)。

3.6字符型數(shù)據(jù)3.6.2字符變量3.6字符型數(shù)據(jù)

3.6.3字符數(shù)據(jù)在內(nèi)存中的存儲形式一個字符常量存放到一個字符變量中,是將該字符的相應的ASCII代碼放到存儲單元中。使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。注意:

一個字符數(shù)據(jù)既可以以字符形式輸出,也可以整數(shù)形式輸出

溫馨提示

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

評論

0/150

提交評論