C語言程序設(shè)計(jì)-進(jìn)階篇:第4章 C語言基本語法_第1頁
C語言程序設(shè)計(jì)-進(jìn)階篇:第4章 C語言基本語法_第2頁
C語言程序設(shè)計(jì)-進(jìn)階篇:第4章 C語言基本語法_第3頁
C語言程序設(shè)計(jì)-進(jìn)階篇:第4章 C語言基本語法_第4頁
C語言程序設(shè)計(jì)-進(jìn)階篇:第4章 C語言基本語法_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第4章

C語言基本語法

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

—進(jìn)階篇2022/11/2內(nèi)容概述C語言基本數(shù)據(jù)類型整型、實(shí)型、字符型的常量形式及變量定義整型、實(shí)型、字符型變量的格式化輸入輸出C語言的類型轉(zhuǎn)換運(yùn)算符及表達(dá)式2022/11/2教學(xué)目標(biāo)掌握數(shù)據(jù)類型的概念,了解C語言能夠處理的數(shù)據(jù)類型。掌握各種類型常量的特點(diǎn)及表示形式。掌握各種類型變量的定義及使用掌握數(shù)據(jù)的輸入輸出的基本方法。掌握C語言的運(yùn)算符、表達(dá)式及運(yùn)用方法。2022/11/2

在C語言中,任何數(shù)據(jù)呈現(xiàn)給用戶的形式只有兩種:常量和變量。而無論數(shù)據(jù)是常量還是變量,都必須屬于各種不同的數(shù)據(jù)類型。在一個(gè)具體的C語言系統(tǒng)里,每個(gè)數(shù)據(jù)類型都有固定的表示方式,這個(gè)表示方式實(shí)際上就確定了可能表示的數(shù)據(jù)范圍和它在內(nèi)存中的存放形式。C語言為數(shù)據(jù)提供了豐富的類型,這些數(shù)據(jù)類型主要分為:基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型、指針類型和空類型四大類。

4.1C語言的數(shù)據(jù)類型

2022/11/2C基本數(shù)據(jù)類型

基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型?;绢愋驼妥址透↑c(diǎn)型單精度雙精度枚舉短整型長整型2022/11/2

整型常量即整數(shù),按不同的進(jìn)制區(qū)分,整數(shù)有三種表示方法:八進(jìn)制數(shù):以0開始的數(shù),如:06、0106、0677等。十六進(jìn)制數(shù):以0X或0x開始的數(shù),如:0X0D、0XFF、0x4e、0x123等。十進(jìn)制數(shù):以非0開始的數(shù),如:220、-560、+369等。4.2.1整型常量4.2整型數(shù)據(jù)2022/11/21、整型變量的分類整型變量分為四種:基本型、短整型、長整型、無符號型基本型: 用“int”定義,在不同的編譯系統(tǒng)中它的長度可能不同,如在TurboC下int變量占2個(gè)字節(jié),而在VC++下6.0環(huán)境下int變量占4個(gè)字節(jié)。

4.2.2整型變量2022/11/2短整型:用“shortint”或“short”定義,占2個(gè)字節(jié)。長整型:用“l(fā)ong”或“l(fā)ongint”定義,占4個(gè)字節(jié)。無符號型:用“unsigned”定義

不存放符號,數(shù)據(jù)不帶符號數(shù)。 無符號整型:“unsignedint”

無符號短整型:“unsignedshortint”

無符號長整型:“unsignedlongint”

注意:如無指定,則為有符號數(shù)。2022/11/2整型變量取值范圍類型說明符數(shù)的范圍 分配字節(jié)數(shù)

int-2147483648~2147483647 ■■■■

shortint-32768~32767 ■■

signedint-32768~32767 ■■

unsignedint0~4294967295 ■■■■

longint-2147483648~2147483647 ■■■■

unsignedlong0~4294967295 ■■■■

int根據(jù)特定的系統(tǒng)對應(yīng)shortint或longintunsignedint根據(jù)特定的系統(tǒng)對應(yīng)unsignedshortint或unsignedlongint超過變量所能表示的范圍,產(chǎn)生計(jì)算錯(cuò)誤:溢出.2022/11/22、整型變量的定義一般形式:

類型說明符變量名標(biāo)識符例如:

inta,b,c;longx,y;unsignedp,q;2022/11/2在定義變量時(shí),應(yīng)注意以下幾點(diǎn):

允許在一個(gè)類型說明符后,說明多個(gè)相同類型的變量。各變量名之間用逗號間隔,類型說明符與變量名之間至少用一個(gè)空格間隔。最后一個(gè)變量名之后必須以“;”結(jié)尾。變量定義必須放在變量使用之前。2022/11/2十進(jìn)制數(shù)形式由數(shù)碼0~9和小數(shù)點(diǎn)組成。例如:

0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實(shí)數(shù)。注意,必須有小數(shù)點(diǎn)。

4.3.1實(shí)型常量

實(shí)型常量也稱為實(shí)數(shù)或浮點(diǎn)數(shù)。在C語言中,實(shí)數(shù)只采用十進(jìn)制,它有兩種形式:十進(jìn)制數(shù)形式和指數(shù)形式。

4.3實(shí)型數(shù)據(jù)2022/11/2指數(shù)形式

由十進(jìn)制數(shù),加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號)組成。其一般形式為:

aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))其值為a*10n。如:

2.1E5(等于2.1*105) 3.7E-2(等于3.7*10-2) 0.5E7(等于0.5*107) -2.8E-2(等于-2.8*10-2)2022/11/2以下則不是合法的實(shí)數(shù): 345(無小數(shù)點(diǎn))

E7(階碼標(biāo)志E之前無數(shù)字) -5(無階碼標(biāo)志) 53.-E3(負(fù)號位置不對) 2.7E(無階碼)

標(biāo)準(zhǔn)C允許浮點(diǎn)數(shù)使用后綴。后綴為“f”或“F”即表示該數(shù)為浮點(diǎn)數(shù)。

如356.f和356.是等價(jià)的。2022/11/2注意:實(shí)型常量不分單、雙精度,都按雙精度double型處理。

因此:(1)十進(jìn)制小數(shù)形式:必須有小數(shù)點(diǎn)。(2)指數(shù)形式:字母e前必須有數(shù)字,字母e后必須為整數(shù),規(guī)范化的指數(shù)形式輸出。

2022/11/2#include<stdio.h>main(){

printf("%f\n",356.);

printf("%f\n",356);

printf("%f\n",356.f);}結(jié)果為:

356.0000000.000000356.000000課堂練習(xí)1:分析下面程序的運(yùn)行結(jié)果。2022/11/24.3.2實(shí)型變量

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

實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)(32位)內(nèi)存空間,按指數(shù)形式存儲。如實(shí)數(shù)3.14159在內(nèi)存中的存放形式如下:+.3141591

數(shù)符小數(shù)部分指數(shù)小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。2022/11/2

實(shí)型變量分為:單精度(float型)、雙精度(double型)。

實(shí)型變量定義的格式和書寫規(guī)則與整型相同。例如:

floatx,y;

doublea,b,c;2.實(shí)型變量的分類2022/11/23實(shí)型數(shù)據(jù)的舍入誤差

由于實(shí)型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的。不同的編譯器下處理的精度不同。課堂練習(xí)2:分析下面程序的運(yùn)行結(jié)果。#include<stdio.h>main(){ floata,b; a=123456.789e5; b=a+20;

printf("%f\n",a);

printf("%f\n",b);}運(yùn)行結(jié)果(VC++):12345678848.00000012345678848.000000

可見一個(gè)大數(shù)與一小數(shù)間運(yùn)算會產(chǎn)生什么結(jié)果?2022/11/25.4.1字符常量

4.4字符型數(shù)據(jù)1、字符常量字符常量是用單引號括起來的一個(gè)字符。例如:

'a'、'A'、'3'、'='、'+'、'?'

注意英文字母區(qū)分大小寫。C字符常量特點(diǎn):字符常量只能用單引號括起來。字符常量只能是單個(gè)字符,不能是字符串。字符可以是字符集中任意字符。如‘5’不同于5。2022/11/22、轉(zhuǎn)義字符

轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線“\”開頭,后跟一個(gè)或幾個(gè)字符。 轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。轉(zhuǎn)義字符主要用來表示那些用一般字符不便于表示的控制代碼。常用的轉(zhuǎn)義字符及其含義如下表:2022/11/2轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼\n換行10\t橫向跳到下一制表位置9\b退格8\r回車13\f走紙換頁12\\反斜線符"\"92\'單引號符39\"雙引號符34\a鳴鈴7\ddd1~3位八進(jìn)制數(shù)所代表的字符

\xhh1~2位十六進(jìn)制數(shù)所代表的字符

2022/11/2

廣義地講,C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示。表中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進(jìn)制和十六進(jìn)制的ASCII代碼。如\101表示字母“A”(見附錄I),\102表示字母“B”,\134表示反斜線,\X0A表示換行等。

常見字符的值:

20H-空格 30H-‘0’-----39H-‘9' 41H-'A' 61H-'a'內(nèi)碼(ASCII碼)在32~126范圍內(nèi)為可顯示字符。

2022/11/2#include"stdio.h"voidmain(){charc1='\101',c2='\x42';

printf("a\tbc\bABC\n");printf("xyz\t%c%c\n",c1,c2);}運(yùn)行結(jié)果:abABC

xyzAB

【例4.1】分析以下程序的執(zhí)行結(jié)果。2022/11/2

字符串常量是由一對雙引號括起來的字符序列。例如,“CHINA”、“CLanguage”、“$abc!”等都是合法的字符串常量。

字符串常量和字符常量之間的區(qū)別:字符常量由單引號括起來,字符串常量由雙引號括起來。字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量。在C語言中沒有相應(yīng)的字符串變量,但是可以用一個(gè)字符數(shù)組來存放一個(gè)字符串常量。3、字符串常量2022/11/2字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符數(shù)加1。增加的一個(gè)字節(jié)中存放字符‘\0’(ASCII碼為0)。例如:字符串"Cprogram"在內(nèi)存中所占的字節(jié)為:C

program\0‘a(chǎn)’和“a”的區(qū)別是:“A”存儲方式為A\0但‘A’存儲方式為:A2022/11/2舉例"TEST""""a"'T''E''S''T'\08469838400\0'a'\00097002022/11/2

在C語言中,可以用一個(gè)標(biāo)識符來表示一個(gè)常量,稱為符號常量。符號常量在使用之前必須先定義。其一般形式為:

#define標(biāo)識符常量

例如:#definePI3.1415926符號常量一經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識符的地方均以該常量值代替。符號常量的標(biāo)識符習(xí)慣上用大寫字母表示,變量標(biāo)識符用小寫字母表示,以示區(qū)別。

4、符號常量

2022/11/2運(yùn)行結(jié)果:s=19.634954

#include"stdio.h"#definePI3.1415926voidmain(){floats,r;r=2.5;s=PI*r*r;

printf("s=%f\n",s);}【例4.2】符號常量的使用。2022/11/24.4.2字符變量

字符變量用來存儲字符常量,即單個(gè)字符。說明形式:

char字符變量名;字符變量在內(nèi)存中占一個(gè)字節(jié),其定義的格式和書寫規(guī)則都與整型變量相同。例如:chara,b;2022/11/2例如定義字符型變量charch;若賦值ch=‘x’;則在內(nèi)存為變量分配一個(gè)字節(jié)的空間,并存放‘x’的ASCII碼值120。所以也可以給字符型變量賦整型值ch=120;011110002022/11/2#include"stdio.h"voidmain(){ chara,b; a=120; b=121;

printf("%c,%c\n",a,b);

printf("%d,%d\n",a,b);}【例4.3】整型數(shù)據(jù)與字符數(shù)據(jù)的相互輸出。2022/11/2#include"stdio.h"voidmain(){ chara,b; a='a'; b='b';

a=a-32; b=b-32;

printf("%c,%c\n%d,%d\n",a,b,a,b);}【例4.4】大小寫字母轉(zhuǎn)換。2022/11/2#include"stdio.h"voidmain(){chara,b;

printf("inputcharactera,b:");

scanf("%c%c",&a,&b);

printf("%c%c\n",a,b);}

【例4.5】運(yùn)行并分析程序的執(zhí)行結(jié)果。運(yùn)行時(shí)輸入MN和MN各輸出什么結(jié)果?試一試:“%c%c”中加上空格會怎樣?(即“%c%c”)2022/11/24.4.3字符數(shù)據(jù)的輸入輸出輸入輸出字符型數(shù)據(jù)可以用scanf()函數(shù)和printf()函數(shù),使用格式苻“%c”。實(shí)際應(yīng)用中,有很多字符輸入輸出的情況,為此,C語言提供了更為簡潔的庫函數(shù)。2022/11/21、putchar

函數(shù)(字符輸出函數(shù))功能:在顯示器上輸出單個(gè)字符。一般形式為:

putchar(字符變量);例如:

putchar('A');(輸出大寫字母A)

putchar(x);(輸出字符變量x的值)

putchar(‘\101’);(也是輸出字符A)

putchar('\n');(換行)2022/11/22.getchar函數(shù)(鍵盤輸入函數(shù))功能:從鍵盤上輸入一個(gè)字符。其一般形式為:

getchar();通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句,如:

charc; c=getchar();2022/11/2【例4.6】輸入輸出單個(gè)字符。#include"stdio.h"voidmain(){charc;

printf("inputacharacter:");c=getchar();

putchar(c);

putchar('\n');}2022/11/2使用putchar和getchar函數(shù)應(yīng)注意的問題:Getchar()函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。使用putchar()輸出控制字符則執(zhí)行控制功能,不在屏幕上顯示,如putchar('\n');使用本函數(shù)前必須包含文件“stdio.h”。2022/11/24.5格式化輸入輸出

C語言不提供輸入/輸出語句,數(shù)據(jù)的輸入/輸出是通過函數(shù)調(diào)用語句來實(shí)現(xiàn)的。在C標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入/輸出函數(shù),它是以標(biāo)準(zhǔn)的輸入/輸出設(shè)備(鍵盤、顯示器等)為輸入/輸出對象的。常用的輸出函數(shù)有printf()函數(shù)和putchar()函數(shù)。輸入函數(shù)有scanf()和getchar()。2022/11/2

使用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí)要用到“stdio.h”文件,因此源文件開頭應(yīng)有以下預(yù)編譯命令: #include<stdio.h>或 #include"stdio.h"二者的區(qū)別:使用尖括號表示在包含文件目錄中去查找(包含目錄是由用戶在設(shè)置環(huán)境時(shí)設(shè)置的),而不在源文件目錄去查找;使用雙引號則表示首先在當(dāng)前的源文件目錄中查找,若未找到才到包含目錄中去查找。用戶編程時(shí)可根據(jù)自己文件所在的目錄來選擇某一種命令形式。

2022/11/2功能:按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。一般形式:

printf(“格式控制字符串”,輸出表列);其中

格式控制字符串用于指定輸出格式;

輸出表列中給出了各個(gè)輸出項(xiàng);要求格式字符串和各輸出項(xiàng)在數(shù)量和類型上應(yīng)該一一對應(yīng)。

4.5.1printf函數(shù)(格式輸出函數(shù))2022/11/2類型:類型字符用以表示輸出數(shù)據(jù)的類型;標(biāo)志:-、+分別表示輸出數(shù)據(jù)左、右對齊;輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。精度:精度格式符以“.”開頭,后跟十進(jìn)制整數(shù)。本項(xiàng)的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個(gè)數(shù);若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過的部分。長度:長度格式符為h,l兩種,h表示按短整型量輸出,l表示按長整型量輸出。在C中格式字符串的一般形式為:

[標(biāo)志][輸出最小寬度][.精度][長度]類型2022/11/2格式字符意

義d以十進(jìn)制形式輸出帶符號整數(shù)(正數(shù)不輸出符號)o以八進(jìn)制形式輸出無符號整數(shù)(不輸出前綴0)x,X以十六進(jìn)制形式輸出無符號整數(shù)(不輸出前綴Ox)u以十進(jìn)制形式輸出無符號整數(shù)f以小數(shù)形式輸出單、雙精度實(shí)數(shù)e,E以指數(shù)形式輸出單、雙精度實(shí)數(shù)g,G以%f或%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù)c輸出單個(gè)字符s輸出字符串2022/11/2【例4.7】運(yùn)行并分析程序的執(zhí)行結(jié)果。#include"stdio.h"voidmain(){

inta=15;floatb=138.3576278;doublec=35648256.3645687;chard='p';

printf("a=%d,%5d,%o,%x\n",a,a,a,a);

printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);printf("c=%lf,%f,%8.4lf\n",c,c,c);printf("d=%c,%8c\n",d,d);}2022/11/2功能:按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。一般形式

scanf(“格式控制字符串”,地址表列);

其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串。地址表列中給出各變量的地址。例如:

scanf(“%d,%d”,&a,&b);4.5.2scanf函數(shù)(格式輸入函數(shù))2022/11/2變量的地址和變量值的關(guān)系如下:在賦值表達(dá)式中給變量賦值,如:

a=3則a為變量名,567是變量的值,&a是變量a的地址。2022/11/2使用scanf()函數(shù)還必須注意以下幾點(diǎn)

(1)scanf()函數(shù)中沒有精度控制。例如,

scanf("%5.2f",&a);×不能企圖用此語句輸入小數(shù)為2位的實(shí)數(shù)。(2)scanf()中要求給出變量地址,如給出變量名則會出錯(cuò)。例如,scanf("%d",a);×應(yīng)改為scanf("%d",&a);√2022/11/2(3)在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒有非格式字符作為輸入數(shù)據(jù)之間的間隔則可用空格,Tab或回車作為間隔。(4)在輸入字符數(shù)據(jù)時(shí),若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。例如,“scanf("%c%c%c",&a,&b,&c);”,輸入為“d□e□f”時(shí),則把'd'賦予a,'□'賦予b,'e'賦予c。只有當(dāng)輸入為def時(shí),才能把'd'賦于a,'e'賦予b,'f'賦予c。如果在格式控制中加入空格作為間隔,如“scanf("%c□%c□%c",&a,&b,&c);”,則輸入時(shí)各數(shù)據(jù)之間可加空格。2022/11/2說明:(1)C語言的格式化輸入/輸出比較繁瑣,在以GUI為主流的應(yīng)用程序的輸入輸出中較少使用(scanf()函數(shù)則用不到),但它的另一種形式sprintf()函數(shù)中的格式化數(shù)據(jù)處理則經(jīng)常會用到。(2)如何獲得有關(guān)sprintf()函數(shù)的用法知識?請使用微軟開發(fā)者網(wǎng)絡(luò)—MicrosoftDeveloperNetwork(MSDN)。它是一個(gè)有關(guān)計(jì)算機(jī)軟件設(shè)計(jì)知識的海洋,是微軟平臺的軟件開發(fā)和應(yīng)用人員的最好的獲取知識的工具。(3)讀者從現(xiàn)在開始,應(yīng)該逐步學(xué)會如何獲取書本上沒有的知識,從MSDN、Internet……。請查閱字符串輸出函數(shù)puts()的用法。

2022/11/24.6數(shù)據(jù)類型轉(zhuǎn)換在編寫程序的過程中,經(jīng)常會將一種數(shù)據(jù)類型的值賦給另一種不同數(shù)據(jù)類型的變量的情況。由于數(shù)據(jù)類型有差異,在賦值時(shí)就要進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換。數(shù)據(jù)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換)強(qiáng)制類型轉(zhuǎn)換(顯示轉(zhuǎn)換)2022/11/24.6.1自動(dòng)類型轉(zhuǎn)換整型、實(shí)型、字符型數(shù)據(jù)間可以混合運(yùn)算。系統(tǒng)在運(yùn)算時(shí)的轉(zhuǎn)換規(guī)則是:將存儲長度較短的運(yùn)算對象轉(zhuǎn)換成存儲長度較長的類型,然后再進(jìn)行處理。這種轉(zhuǎn)換是系統(tǒng)自動(dòng)進(jìn)行的1.各類數(shù)據(jù)類型間混合運(yùn)算時(shí)的類型轉(zhuǎn)換規(guī)則2022/11/2

高double←float↑

unsignedlong←long

unsigned←unsignedshort

↑低int←char,short

2022/11/2(1)水平方向的轉(zhuǎn)換:如float型數(shù)據(jù)必先轉(zhuǎn)換為double型數(shù)據(jù),char型或short型數(shù)據(jù)必先轉(zhuǎn)換為int型數(shù)據(jù),然后進(jìn)行運(yùn)算。(2)垂直方向的轉(zhuǎn)換:如int型數(shù)據(jù)與unsigned型數(shù)據(jù)進(jìn)行運(yùn)算,int型轉(zhuǎn)換為unsigned型;int型數(shù)據(jù)與double型數(shù)據(jù)進(jìn)行運(yùn)算,int型直接轉(zhuǎn)換為double型后進(jìn)行運(yùn)算。2022/11/22.賦值時(shí)的類型轉(zhuǎn)換實(shí)型賦予整型,舍去小數(shù)部分。整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。字符型賦予整型,由于字符型為1個(gè)字節(jié),而整型為2個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低8位中,高8位為0。整型賦予字符型,只把低8位賦予字符量。非unsigned與unsigned數(shù)據(jù)類型相互賦值時(shí),直接傳送數(shù)值。當(dāng)賦值運(yùn)算符兩側(cè)的類型不同時(shí),需進(jìn)行類型轉(zhuǎn)換,這種轉(zhuǎn)換也是系統(tǒng)自動(dòng)進(jìn)行的。2022/11/2在賦值運(yùn)算時(shí),最好是賦值號右側(cè)的數(shù)據(jù)類型級別等于或低于賦值號左邊的變量的類型級別,否則,會導(dǎo)致運(yùn)算精度降低,甚至出現(xiàn)意想不到的結(jié)果。2022/11/2【例4.8】運(yùn)行以下程序并分析程序運(yùn)行結(jié)果。#include"stdio.h"voidmain(){

int

a,b=321,c;floatx,y=1.23;charc1='a',c2;c=y;x=b;

a=c1;c2=b;printf("%d,%f,%d,%c\n",c,x,a,c2);}2022/11/24.6.2強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換的一般形式為(類型說明符)(表達(dá)式)例如:若有定義“int

a,x,y;則(float)a把a(bǔ)轉(zhuǎn)換為單精度實(shí)型(double)(x+y)把x+y的結(jié)果轉(zhuǎn)換為雙精度實(shí)型2022/11/2需要說明的是,強(qiáng)制類型轉(zhuǎn)換是為了本次運(yùn)算的需要,對數(shù)據(jù)類型進(jìn)行的臨時(shí)轉(zhuǎn)換,并沒有改變數(shù)據(jù)原來的類型。例如

(double)(x+y)的類型是double,但變量x和y的類型還是int。2022/11/2強(qiáng)制轉(zhuǎn)換運(yùn)算符優(yōu)先級比算術(shù)運(yùn)算符高。例如,已知有變量定義:intb=7;floata=2.5,c=4.7;求算術(shù)表達(dá)式a+(int)(b/3*(int)(a+c)/2.0)%4的值根據(jù)運(yùn)算符結(jié)合性規(guī)則,上述表達(dá)式要自左之右執(zhí)行,b/3為2,2*int(a+c)為14,14/2.0為7.0,強(qiáng)制類型轉(zhuǎn)換后為7,7%4為3;a的值2.5與3相加,最終結(jié)果為5.5。2022/11/24.7運(yùn)算符與表達(dá)式在第二章中,我們已經(jīng)介紹了:算術(shù)運(yùn)算符:+、-、*、/、%;關(guān)系運(yùn)算符:>、<、==、>=、<=、!=;邏輯運(yùn)算符:!、&&、||。C語言中常用的運(yùn)算符還有自增自減運(yùn)算符、條件運(yùn)算符、逗號運(yùn)算符等。2022/11/21自增、自減運(yùn)算符及其表達(dá)式1形式++i,--i

使用i之前,先使i的值加/減1i++,i--

使用i之后,再使i的值加/減12說明++i和--i的值是加/減1之后i的值i++和i--的值是加/減1之前i的值++和--只能用于變量,不能用于常量和表達(dá)式++和--的結(jié)合方向是“自右向左”2022/11/2(1)單獨(dú)使用時(shí)++i;等價(jià)i++;等價(jià)i=i+1;(2)j=++i;(3)j=i++;若i的初始值為3i=4;j=4;i=4;j=3;2022/11/2#include<stdio.h>#include<stdio.h>voidmain(){

inti; i=8; printf("%5d",++i); printf("%5d",--i); printf("%5d",i++); printf("%5d",i--); printf("%5d",-i++); printf("%5d\n",-i--);}【例4.9】運(yùn)行以下程序并分析程序運(yùn)行結(jié)果。2022/11/2++、--運(yùn)算符應(yīng)用于邏輯表達(dá)式“a&&b&&c”和“a||b||c”時(shí)需格外注意

例如:若a=0;b=1;c=2;執(zhí)行d=a++&&b++&&--c;之,a,b,c,d的值各是什么?分析:因變量a先參加表達(dá)式的運(yùn)算,后自增,所以參加表達(dá)式運(yùn)算的值是0,所以整個(gè)表達(dá)式的值是0,即d=0,a自增變?yōu)?,b++和—c沒有得到執(zhí)行,所以b=1,c=2。即運(yùn)算結(jié)果:d=0,a=1,b=1,c=22022/11/2若a=0;b=1;c=2;

執(zhí)行d=a++||b++||--c;后a,b,c,d的值各是什么?分析:因變量a先參加表達(dá)式的運(yùn)算,后自增,所以第一個(gè)||前的表達(dá)式值為0(假),需要運(yùn)算第二個(gè)表達(dá)式即b++,由于b=1,所以整個(gè)表達(dá)式的值為1,即d=1,b自增后變?yōu)?,第三個(gè)表達(dá)式—c沒有得到執(zhí)行,所以c=2。即運(yùn)算結(jié)果:d=1,a=1,b=2,c=2。2022/11/21.條件運(yùn)算符條件運(yùn)算符由問號“?”和比例號“:”組成,用于連接三個(gè)運(yùn)算對象,是C語言中唯一的一個(gè)三目運(yùn)算符。

2.條件表達(dá)式一般形式:

溫馨提示

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

評論

0/150

提交評論