《C語言程序設(shè)計(jì)教程》課件第2章數(shù)據(jù)類型_第1頁
《C語言程序設(shè)計(jì)教程》課件第2章數(shù)據(jù)類型_第2頁
《C語言程序設(shè)計(jì)教程》課件第2章數(shù)據(jù)類型_第3頁
《C語言程序設(shè)計(jì)教程》課件第2章數(shù)據(jù)類型_第4頁
《C語言程序設(shè)計(jì)教程》課件第2章數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式本章要點(diǎn):基本數(shù)據(jù)類型常量和變量算術(shù)運(yùn)算符和算術(shù)表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式賦值運(yùn)算符和賦值表達(dá)式逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式數(shù)據(jù)類型轉(zhuǎn)換學(xué)習(xí)方法建議:

本章主要內(nèi)容是基本概念和定義,大部分內(nèi)容需要記憶,學(xué)習(xí)時(shí)應(yīng)注意歸納,列出記憶要點(diǎn)。本章重點(diǎn)掌握基本數(shù)據(jù)類型、各種運(yùn)算符和表達(dá)式的用法,本章的難點(diǎn)是自增/自減運(yùn)算符的用法。2.1引例1.問題分析——計(jì)算圓面積假設(shè)圓的半徑用radius表示,若半徑的值為10,利用公式,計(jì)算圓面積。2.程序代碼#include"stdio.h"#definePI3.1415926 /*定義符號(hào)常量PI*/voidmain(){doubleradius,area=0.0;/*定義變量radius和area分別為半徑和面積*/radius=10; /*半徑賦值為10*/area=PI*radius*radius; /*計(jì)算面積*/printf("Theareaofcircleis%lf\n",area);}

任何程序都涉及到待處理的數(shù)據(jù),數(shù)據(jù)可以是常量和變量。C語言可以處理的數(shù)據(jù)類型有很多,可分為基本類型、構(gòu)造類型、指針類型和空類型。C語言的所有數(shù)據(jù)類型如圖所示。2.2常量與變量

2.2.1常量在程序運(yùn)行過程中,其值不能被改變的量,稱為常量。在C語言中,常量有不同的類型,有整型常量、實(shí)型常量、字符常量和字符串常量、符號(hào)常量等,即使是整型常量也還有基本型、短整型、長(zhǎng)整型……之分。整型常量,如:5、-8、0等;實(shí)型常量,如:2.5、-1.98等;字符型常量,如:‘a(chǎn)’、‘b’等;字符串常量,如:“abc”、“thisisabook”等。另外,還可以用標(biāo)識(shí)符(即符號(hào))來表示常量,稱符號(hào)常量。在C語言中有兩種方法定義符號(hào)常量。(1)使用編譯預(yù)處理命令define,例如:#definePI3.14159(2)使用常量說明符const,例如:constfloatPI=3.141592.2常量與變量2.2.2變量指在程序運(yùn)行過程中其值可以被改變的量。定義變量形式:類型名變量名1,變量名2,…,變量名n;其中變量名必須遵循標(biāo)識(shí)符的命名規(guī)則。在C語言中,要“先定義,后使用”。2.2常量與變量(1)凡未被事先定義的,系統(tǒng)不把它認(rèn)作變量名,這就能保證程序中變量名使用得正確。例如:如果在聲明部分有語句:intstudent;而在執(zhí)行語句中錯(cuò)寫成stadent。例如:stadent=30(2)每一個(gè)變量被指定為一個(gè)確定類型,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元。(3)指定每一變量屬于一個(gè)類型,這就便于在編譯時(shí)據(jù)此檢查在程序中要求對(duì)該變量進(jìn)行的運(yùn)算是否合法。例如,整型變量a和b,可以進(jìn)行求余運(yùn)算:a%b,如果將a、b指定為實(shí)型變量,則不允許進(jìn)行“求余”運(yùn)算,在編譯時(shí)會(huì)給出有關(guān)“出錯(cuò)信息”。2.2常量與變量2.3.1整型常量整型常量的三種表示形式:(1)十進(jìn)制數(shù)表示形式:如23、0、-16。(2)八進(jìn)制數(shù)表示形式:以0開頭是八進(jìn)制數(shù)。如023,即八進(jìn)制數(shù)的23。(3)十六進(jìn)制數(shù)表示形式:以0x開頭作為十六進(jìn)制數(shù)。如0x23,即十六進(jìn)制數(shù)的23。2.3整型數(shù)據(jù)2.3.2整型變量整型變量的基本類型符為int??梢愿鶕?jù)數(shù)值的范圍將變量定義為基本整型、短整型或長(zhǎng)整型。(1)基本整型,以int表示。(2)短整型,以short[int]表示。(3)長(zhǎng)整型,以long[int]表示。若加上unsigned,可用來存儲(chǔ)無符號(hào)整數(shù)。(4)無符號(hào)基本整型,以u(píng)nsigned[int]表示。(5)無符號(hào)短整型,以u(píng)nsignedshort[int]表示。(6)無符號(hào)長(zhǎng)整型,以u(píng)nsignedlong[int]表示。2.3整型數(shù)據(jù)表2-1列出了VC6.0中定義的整型數(shù)所占的字節(jié)數(shù)和數(shù)值范圍。在一個(gè)整型常量后加一個(gè)字母u或U,則認(rèn)為是unsignedint型。例如:123u。在一個(gè)整型常量后加一個(gè)字母l或L,則認(rèn)為是Longint型。例如:0L,123L。表2-1整型數(shù)據(jù)類型所占位數(shù)所占字節(jié)數(shù)數(shù)的表示范圍[signed]int324-2147483648~214748367,即-231~231-1[signed]short[int]162-32768~32767,即-215~215-1[signed]long[int]324-2147483648~214748367,即-231~231-1unsigned[int]3240~4294967295,即0~232-1unsignedshort[int]1620~65535,即0~216-1unsignedlong[int]3240~4294967295,即0~232-1不同的整型數(shù)據(jù),應(yīng)根據(jù)其特征和取值范圍,將其定義成不同的整型變量。例如:inta,b;/*定義a,b為整型變量*/unsignedshortc,d;/*定義c,d為無符號(hào)短整型變量*/longe,f;/*定義e,f為長(zhǎng)整型變量*/【例2.1】整型變量的定義與使用。源程序#include<stdio.h>voidmain(){inta,b,c,d;/*定義a,b,c,d為整型變量*/unsignedu;/*定義u為無符號(hào)整型變量*/a=12;b=-24;u=10;c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n",c,d);}2.3.3整型變量的使用運(yùn)行結(jié)果為:a+u=22,b+u=-14【例2.2】短整型數(shù)據(jù)的溢出。#include<stdio.h>voidmain(){shortinta,b;a=32767;b=a+1;printf("a=%d,b=%d\n",a,b);}【例2.3】編寫程序,計(jì)算一個(gè)正方體容器的體積,假設(shè)正方體邊長(zhǎng)分別為75cm。利用公式“體積=邊長(zhǎng)×邊長(zhǎng)×邊長(zhǎng)”計(jì)算正方體體積。#include“stdio.h”main(){intsidel;/*定義int型變量sidel保存正方體邊長(zhǎng)*/longvol;/*定義long型變量vol保存正方體體積*/sidel=75;/*把75賦給變量sidel*/vol=sidel*sidel*sidel;/*計(jì)算正方體體積*/printf(“volume=%ld”,vol);/*輸出正方體體積*/}2.4實(shí)型數(shù)據(jù)2.4.1實(shí)型常量(1)十進(jìn)制形式:它由整數(shù)部分、小數(shù)點(diǎn)和小數(shù)部分三部分組成。當(dāng)整數(shù)部分為0或小數(shù)部分為0時(shí)都可省略,但小數(shù)點(diǎn)不能省略。例如3.14、10.8、123.、.12、0.0等。(2)指數(shù)形式:它由三部分組成:尾數(shù)、大寫字母E(或小寫字母e)、整型指數(shù)。它適合表示比較小或比較大的數(shù)。字符E前必須有數(shù)字,且E后的指數(shù)必須為整數(shù)。例如3.0E+5或3.0e+5都表示3.0×105。1.23E-2表示1.230×10-2或0.0123。注意:字母e或E之前(即尾數(shù)部分)必須有數(shù)字。字母e或E后面的指數(shù)部分必須是整數(shù)。實(shí)型變量又稱為浮點(diǎn)型變量,按能夠表示數(shù)的精度,又分為單精度(float型)、雙精度(double型)和長(zhǎng)雙精度(longdouble型)在TurboC中有關(guān)浮點(diǎn)型的數(shù)據(jù)如表2-2所示。對(duì)每一個(gè)浮點(diǎn)型變量都應(yīng)在使用前加以定義。例如:

floata,b;

/*定義a,b為單精度浮點(diǎn)數(shù)*/

doublez;

/*定義z為雙精度浮點(diǎn)數(shù)*/

longdoublet;/*定義t為長(zhǎng)雙精度浮點(diǎn)數(shù)*/2.4.2實(shí)型變量表2-2浮點(diǎn)型數(shù)據(jù)類型所占位數(shù)所占字節(jié)數(shù)有效數(shù)字?jǐn)?shù)值范圍float3246~7-3.4×10-38~3.4×1038double64815~16-1.7×10-308~1.7×10308longdouble1281618~19-1.2×10-4932~1.2×104932【例2.4】假設(shè)銀行定期存款的年利率是3.25%,并已知存款期限為n年,存款本金為x元,編寫程序計(jì)算n年后得到的本利之和是多少。利用公式“”計(jì)算n年后的本利之和。定義變量x和n分別保存本金和存款年限。#include"stdio.h"#include"math.h"main(){floatx=8451;/*定義變量x保存本金*/intn;floatsum1=0.0;/*定義單精度實(shí)型數(shù)據(jù)sum1保存本利之和*/doublesum2=0.0;/*定義雙精度實(shí)型數(shù)據(jù)sum2保存本利之和*/printf("\nEnterthenumberofyears:");scanf("%d",&n);/*輸入存款年限*/sum1=x*pow((1+0.0325),n);/*計(jì)算本利之和并使用單精度*/sum2=x*pow((1+0.0325),n);/*計(jì)算本利之和并使用雙精度*/printf("\nsum1=%.8f,sum2=%.8lf",sum1,sum2);/*輸出本利之和*/}2.5字符型數(shù)據(jù)2.5.1字符常量

C語言中用一對(duì)單引號(hào)括起來的單個(gè)字符,稱為字符常量。例如:‘a(chǎn)’、‘A’、‘1’等,其中‘a(chǎn)’、‘A’是兩個(gè)不同的字符常量。一個(gè)字符常量的值是該字符集中對(duì)應(yīng)的編碼值。例如:在ASCII字符集中,字符常量'0'~'9'的ASCII編碼值是48~57。顯然,'0'與數(shù)字0是不同的。C語言還有一種特殊形式的字符常量,即轉(zhuǎn)義字符型常量。常用的以“\”開頭的特殊字符如表2-3所示。表2-3轉(zhuǎn)義字符及其功能表轉(zhuǎn)義字符功能ASCⅡ代碼\n換行,將當(dāng)前位置移到下一行開頭10\t水平制表符(TAB)9\b退格,將當(dāng)前位置移到前一列8\r回車,將當(dāng)前位置移到本行開頭13\f換頁,將當(dāng)前位置移到下頁開頭12\\代表一個(gè)反斜杠字符”\”92\'代表一個(gè)單引號(hào)字符39\"代表一個(gè)雙引號(hào)字符34\ddd1到3位八進(jìn)制所代表的字符\xhh1到2位十六進(jìn)制數(shù)所代表的字符【例2.5】轉(zhuǎn)義字符的應(yīng)用。#include<stdio.h>voidmain(){printf("please\t\x48\n");}運(yùn)行結(jié)果為:please□□H可以看出printf函數(shù)直接原樣輸出雙引號(hào)內(nèi)的普通字符please,然后遇到轉(zhuǎn)義字符“\t”其作用是橫向跳到下一個(gè)輸出區(qū)(每個(gè)輸出占8列),即在第9列輸出字符H。(因?yàn)閜lease占了6列,所以第一個(gè)輸出區(qū)還剩2列,H字符輸出在第9列。

字符變量是用來存放字符常量的,并且只能放一個(gè)字符,而不是一個(gè)字符串。它的類型關(guān)鍵字用char,占用1字節(jié)的內(nèi)存單元。例如:

charc1,c2; /*定義兩個(gè)字符變量c1,c2*/

c1=‘a(chǎn)’;c2=‘b’;/*給字符變量賦值*/將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值存儲(chǔ)到內(nèi)存單元中。2.5.2字符變量【例2.6】將字母進(jìn)行大、小寫轉(zhuǎn)換,并輸出轉(zhuǎn)換結(jié)果和字母的ASCII碼值。#include<stdio.h>voidmain(){

charc1,c2;c1='a';c2='B';

c1=c1-32;c2=c2+32;/*字母的大、小寫轉(zhuǎn)換*/printf("c1=%c,c2=%c\n",c1,c2);/*以字符形式輸出字符變量*/printf("c1=%d,c2=%d\n",c1,c2);/*以整數(shù)形式輸出字符變量*/}

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

c1=A,c2=bc1=65,c2=981.字符串常量的定義字符串常量是用一對(duì)雙引號(hào)括起來的字符序列。字符串中字符的個(gè)數(shù)稱為字符串長(zhǎng)度。長(zhǎng)度為0的字符串稱為空串,表示為""。例如:"Howareyou."、"Goodmorning."等,都是字符串常量,其長(zhǎng)度分別為12和13(空格也是一個(gè)字符)。如果反斜杠和雙引號(hào)作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。2.字符串的存儲(chǔ)

C語言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)'\0'作為字符串的結(jié)束標(biāo)志。2.5.3字符串常量注意:字符常量'a'與字符串常量"a"是兩回事,兩者不同之處:定界符不同:字符常量使用單引號(hào),字符串常量使用雙引號(hào);長(zhǎng)度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是0,可以是某個(gè)整數(shù);存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志'\0'。如果有一個(gè)字符串為"CHINA",它在內(nèi)存存儲(chǔ)如圖2-2所示。2.6運(yùn)算符與表達(dá)式運(yùn)算符是表示某種操作的符號(hào),在C語言中,除控制語句和輸入輸出函數(shù)外,其他所有基本操作都作為運(yùn)算符處理。C語言運(yùn)算符可分為以下幾類:(1)算術(shù)運(yùn)算符:+-*/%++--(2)關(guān)系運(yùn)算符:>>=<<===!=(3)邏輯運(yùn)算符:&&||!(4)賦值運(yùn)算符:=+=-+*=/=%=&=|=^=<<=>>=(5)條件運(yùn)算符:?:(6)逗號(hào)運(yùn)算符:,(7)位運(yùn)算符:&|^~<<>>(8)指針運(yùn)算符:*&(9)求字節(jié)數(shù)運(yùn)算符:sizeof(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型標(biāo)識(shí)符)(11)分量運(yùn)算符:.->(12)下標(biāo)運(yùn)算符:[](13)圓括號(hào):()1.基本的算術(shù)運(yùn)算符有:(1)+(加法運(yùn)算符或取正值運(yùn)算符,如1+2、+2);(2)-(減法運(yùn)算符或取負(fù)值運(yùn)算符,如2-1、-2);(3)*(乘法運(yùn)算符,如1*2);(4)/(除法運(yùn)算符,如5/2);(5)%(求余運(yùn)算符,或稱模運(yùn)算符,如7%5的值為2)。注意:C語言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5/2=2。如果操作數(shù)中有負(fù)數(shù),取整通常采取“向零取整”的方法。例如,5/-3=-1。求余運(yùn)算符的兩邊要求是整數(shù),否則出錯(cuò)。如:

9%5,結(jié)果為4。如:

9.5%5,結(jié)果出錯(cuò)。2.6.1算術(shù)運(yùn)算符和算術(shù)表達(dá)式

由算術(shù)運(yùn)算符、括號(hào)以及操作對(duì)象組成的符合C語言語法規(guī)則的表達(dá)式稱為算術(shù)表達(dá)式。C語言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,例如先乘除后加減。如表達(dá)式a-b*c,b的左側(cè)為減號(hào),右側(cè)為乘號(hào),而乘號(hào)優(yōu)先于減號(hào),因此,相當(dāng)于a-(b*c)。如果一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同,C語言規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即先左后右?!白宰笾劣业慕Y(jié)合方向”又稱“左結(jié)合性”,即運(yùn)算對(duì)象先和左邊的運(yùn)算符結(jié)合。2.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性【例2.7】計(jì)算,x為整數(shù),要求從鍵盤輸入。#include"stdio.h"voidmain(){intx=0;floaty=0.0;printf("\ninputanintegerx(x<2orx>2):");scanf("%d",&x);/*從鍵盤輸入一個(gè)整數(shù)值,賦值給變量x*/y=(float)(x*x-5*x+3)/(x-2);/*計(jì)算表達(dá)式*/printf("\nx=%d,y=%f\n",x,y);/*輸出x和y的值*/}3.自增、自減運(yùn)算符(1)前置運(yùn)算──運(yùn)算符放在變量之前運(yùn)算式為:++變量、--變量先使變量的值增(或減)1,然后再以變化后的值參與其他運(yùn)算,即先增減、后運(yùn)算。例如:j=++i,其中i=2,先計(jì)算i=i+1=3,后賦值j=3,所以結(jié)果是i=3,j=3。(2)后置運(yùn)算──運(yùn)算符放在變量之后運(yùn)算式為:變量++、變量--變量先參與其他運(yùn)算,然后再使變量的值增(或減)1,即先運(yùn)算、后增減。例如:j=i++,其中i的初值還是2,但此時(shí)是先賦值j=i,后計(jì)算i=i+1=2+1=3,所以結(jié)果是i=3,j=2?!纠?.8】自增、自減運(yùn)算符應(yīng)用。#include<stdio.h>voidmain(){intx=1,y;printf("x=%d\n",x);/*輸出x的初值*/y=++x; /*前置運(yùn)算*/printf("x=%d,y=%d\n",x,y);y=x--; /*后置運(yùn)算*/printf("x=%d,y=%d\n",x,y);}2.6.2賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算符賦值符號(hào)“=”,將賦值運(yùn)算符右邊表達(dá)式的值賦給左邊的變量。例如:a=5/*將5賦給變量a*/x=(a+3)*5/2/*將表達(dá)式(a+3)*5/2的值賦給變量x*/注意:如果“=”兩側(cè)的類型不一致,在賦值時(shí)要進(jìn)行類型轉(zhuǎn)換。例如:a=b;執(zhí)行該語句時(shí),b的結(jié)果轉(zhuǎn)換為a的類型后才能進(jìn)行賦值運(yùn)算。2.復(fù)合賦值運(yùn)算符在賦值運(yùn)算符“=”之前加上一個(gè)其他運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符。如:i+=1/*等價(jià)于i=i+1*/a*=b-2/*等價(jià)于a=a*(b-2)*/r%=3/*等價(jià)于r=r%3*/C語言規(guī)定了如下10種復(fù)合賦值運(yùn)算符:+=,-=,*=,/=,%=;&=,^=,|=,<<=,>>=;3.賦值表達(dá)式(1)賦值表達(dá)式賦值表達(dá)式的一般格式:

<變量><賦值運(yùn)算符><表達(dá)式>它的功能是將賦值運(yùn)算符右邊“表達(dá)式”的值賦給左邊的變量。注意:賦值表達(dá)式左邊必須是變量。(2)賦值表達(dá)式的值賦值表達(dá)式的求解過程是:將賦值運(yùn)算符右側(cè)的表達(dá)式的值賦給左邊的變量。賦值表達(dá)式的值就是被賦值變量的值。例如:x=5這個(gè)賦值表達(dá)式的值為5(x變量的值也是5)又例如:a+=a-=a*a,設(shè)a=5,求a的值。右結(jié)合a+=a=a-a*a,先計(jì)算a=a-a*a。a=5-5*5=-20,再計(jì)算a+=a。a=a+a=-20+(-20)=-40。所以a等于-40整個(gè)賦值表達(dá)式的值也等于-40。使用賦值表達(dá)式的過程中可能遇到下列問題。(1)賦值表達(dá)式中的“表達(dá)式”又可以是一個(gè)賦值表達(dá)式。例如:a=(b=1),把b=1的值賦給a,所以整個(gè)賦值表達(dá)式值就等于1,即a=1。賦值運(yùn)算符按照“自右向左”的組合順序,因此“a=(b=1)”就等價(jià)于“a=b=1”。(2)賦值表達(dá)式也可以包含復(fù)合的賦值運(yùn)算符。如a+=a-=a*=a,如果a的初值是2,此賦值表達(dá)式的運(yùn)算過程是:先計(jì)算“a*=a”的值,即相當(dāng)于a=a*a=2*2=4。再計(jì)算“a-=4”的值,即相當(dāng)于a=a-4=4-4=0。最后計(jì)算“a+=0”的值,即相當(dāng)于a=a+0=0+0=0?!纠?.9】求二次方程的根。#include"stdio.h"#include"math.h"voidmain(){floata,b,c,x1,x2;printf("inputa,b,c(b*b-4*a*c)>=0:");scanf("%f%f%f",&a,&b,&c);x1=(-b+sqrt(b*b-4*a*c))/(2*a);/*sqrt函數(shù)的功能是求一個(gè)數(shù)的平方根*/x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf("x1=%f,x2=%f\n",x1,x2);}1.關(guān)系運(yùn)算符C語言提供以下6種關(guān)系運(yùn)算符:<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)前4種關(guān)系運(yùn)算符優(yōu)先級(jí)高于后2種關(guān)系運(yùn)算符優(yōu)先級(jí)。注意:在C語言中,“等于”關(guān)系運(yùn)算符是雙等號(hào)“==”,而不是單等號(hào)“=”(賦值運(yùn)算符)。2.6.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式2.關(guān)系表達(dá)式(1)關(guān)系表達(dá)式由關(guān)系運(yùn)算符連接起來的式子,稱為關(guān)系表達(dá)式。(2)關(guān)系表達(dá)式的值關(guān)系表達(dá)式的值是一個(gè)邏輯值。即“真”或“假”。用整數(shù)“1”代表“真”,用整數(shù)“0”代表“假”。例如:假設(shè)n1=3,n2=4,n3=5,則:①n1>n2的值為0。②(n1>n2)!=n3的值為1。③n1<n2<n3的值為1,因?yàn)閚1<n2的值為1,1<5的值為1。④(n1<n2)+n3的值為6,因?yàn)閚1<n2的值為1,1+5的值為6。注意:C語言中用整數(shù)“1”表示“真”,用整數(shù)“0”表示“假”。2.6.4邏輯運(yùn)算符和邏輯表達(dá)式1.邏輯運(yùn)算符(1)邏輯運(yùn)算符C語言提供以下3種邏輯運(yùn)算符:&&邏輯與(相當(dāng)于“同時(shí)”)|| 邏輯或(相當(dāng)于“或者”)! 邏輯非(相當(dāng)于“否定”)(2)運(yùn)算規(guī)則&&:當(dāng)且僅當(dāng)兩個(gè)運(yùn)算量的值都為“真”時(shí),運(yùn)算結(jié)果為“真”,否則為“假”。||:當(dāng)且僅當(dāng)兩個(gè)運(yùn)算量的值都為“假”時(shí),運(yùn)算結(jié)果為“假”,否則為“真”。!:當(dāng)運(yùn)算量的值為“真”時(shí),運(yùn)算結(jié)果為“假”;當(dāng)運(yùn)算量的值為“假”時(shí),運(yùn)算結(jié)果為“真”。邏輯運(yùn)算符的真值表如表2-5所示。表2-5邏輯運(yùn)算符的真值表aba&&ba||b!a真真真真假真假假真假假真假真真假假假假真(3)邏輯運(yùn)算符的優(yōu)先級(jí)①邏輯非的優(yōu)先級(jí)最高,邏輯與次之,邏輯或最低,即:?。ǚ牵?&(與)→||(或)②與其他運(yùn)算符的優(yōu)先級(jí)相比(由高到低)!→算術(shù)運(yùn)算→關(guān)系運(yùn)算→&&→||→賦值運(yùn)算2.邏輯表達(dá)式(1)邏輯表達(dá)式所謂邏輯表達(dá)式是指,用邏輯運(yùn)算符將1個(gè)或多個(gè)表達(dá)式連接起來,進(jìn)行邏輯運(yùn)算的式子。在C語言中,用邏輯表達(dá)式表示多個(gè)條件的組合。例如:(a>b)&&(x>y)||(a<=b)邏輯表達(dá)式的值也是一個(gè)邏輯值(非“真”即“假”)。(2)邏輯量的真假判定──0和非0C語言中用整數(shù)“1”代表“真”、用“0”代表“假”。但在判斷一個(gè)數(shù)據(jù)的“真”或“假”時(shí),卻以0和非0為根據(jù):如果為0,則判定為“假”;如果為非0,則判定為“真”。注意:邏輯運(yùn)算符兩側(cè)的操作數(shù),除可以是0和非0的整數(shù)外,也可以是其他任何類型的數(shù)據(jù),如實(shí)型、字符型等。在計(jì)算邏輯表達(dá)式時(shí),并不是所有的邏輯運(yùn)算符都被執(zhí)行,只有在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。1.逗號(hào)運(yùn)算符C語言提供一種特殊的運(yùn)算符,即逗號(hào)運(yùn)算符。逗號(hào)運(yùn)算符的優(yōu)先級(jí)是C語言中所有運(yùn)算符中最低的,結(jié)合方向?yàn)樽蠼Y(jié)合。2.逗號(hào)表達(dá)式逗號(hào)表達(dá)式的一般形式:表達(dá)式1,表達(dá)式2,……,表達(dá)式n求解過程:由逗號(hào)隔開的一對(duì)表達(dá)式從自左至右依次計(jì)算各表達(dá)式的值,“表達(dá)式n”的值即為整個(gè)逗號(hào)表達(dá)式的值。例如:逗號(hào)表達(dá)式“a=2+3,a=a*6,a/10”,先求解a=2+3,得a=5;再求a*6,得a=30,再求a/10,即30/10=3。所以,最后逗號(hào)表達(dá)式的值等于3,而a=30。2.6.5逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式2.6.6位運(yùn)算符C語言提供了六種位運(yùn)算。1.“按位與”運(yùn)算符(&)格式:x&y規(guī)則:參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相與,只有對(duì)應(yīng)的兩個(gè)二進(jìn)位均為1時(shí),結(jié)果位才為1,否則為0。例如:3&9=1:2.“按位或”運(yùn)算符(|)格式:x|y規(guī)則:參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相或,只要對(duì)應(yīng)的兩個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果位就為1。例如:3|9=11:

3.“異或”運(yùn)算符(^)格式:x^y規(guī)則:參與運(yùn)算的兩數(shù)各對(duì)應(yīng)的二進(jìn)位相異或,當(dāng)兩個(gè)對(duì)應(yīng)的二進(jìn)位相異時(shí)結(jié)果為1,相同時(shí)為0。例如:3^9=10:4.“取反”運(yùn)算符(~)格式:~x規(guī)則:參與運(yùn)算的數(shù)的各個(gè)二進(jìn)位按位求反,即將0變1,將1變0。例如:~14=15.“左移”運(yùn)算符(<<)格式:x<<位數(shù)規(guī)則:把“<<”左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由“<<”右邊的數(shù)指定移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。例如:5<<2=206.“右移”運(yùn)算符(>>)格式:x>>位數(shù)規(guī)則:把“>>”左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,“>>”右邊的數(shù)指定移動(dòng)的位數(shù)。例如:20>>2=5在C語言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類型不同,則系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算”的原則,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類型,然后在同一類型數(shù)據(jù)間進(jìn)行運(yùn)算。橫向向左的箭頭表示必須的轉(zhuǎn)換。char和short型必須先轉(zhuǎn)換成int型,float型數(shù)據(jù)運(yùn)算時(shí)首先要轉(zhuǎn)換成double型,以提高運(yùn)算的精度??v向向上的箭頭表示當(dāng)對(duì)象為不同類型數(shù)據(jù)時(shí)的轉(zhuǎn)換方向。數(shù)據(jù)總是由低級(jí)別向高級(jí)別轉(zhuǎn)換的。注意:

箭頭方向只表示數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論