譚浩強C語言配套課件c第二章_第1頁
譚浩強C語言配套課件c第二章_第2頁
譚浩強C語言配套課件c第二章_第3頁
譚浩強C語言配套課件c第二章_第4頁
譚浩強C語言配套課件c第二章_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1主講:楊斐qq:1214593882第二章 數(shù)據(jù)描述預(yù)備知識c語言的各種數(shù)據(jù)類型c語言各種運算符3 2.0 預(yù)備知識計算機中數(shù)的表示及進制轉(zhuǎn)換 數(shù)碼、基與權(quán) 數(shù)碼:數(shù)制中表示基本數(shù)值大小的不同數(shù)字符號。例如,十進制有10個數(shù)碼:0、1、2、3、4、5、6、7、8、9。 基數(shù):數(shù)制所使用數(shù)碼的個數(shù)。例如,二進制的基數(shù)為2;十進制的基數(shù)為10。 權(quán):數(shù)制中某一位上的1所表示數(shù)值的大?。ㄋ幬恢玫膬r值)。例如,十進制的123,1的位權(quán)是100,2的位權(quán)是10,3的位權(quán)是1。數(shù)制:數(shù)制也稱計數(shù)制,是用一組固定的符號和統(tǒng)一的規(guī)則來表示數(shù)值的方法。人們通常采用的數(shù)制有十進制、二進制、八進制和十六進制。

2、語言程序設(shè)計 第二章數(shù)據(jù)描述c4數(shù)制基權(quán)表示數(shù)碼特點10,10,10,十進制數(shù)0910逢十進一二進制數(shù)0122,2,2,逢二進一八進制數(shù)0788,8,8,逢八進一十六進制數(shù)09,af,af1616,16,16,逢十六進一十進制:4956= 410+910 +510+610二進制:1011=12+02 +12+12十六進制:81ae=816+116 +1016+1416八進制:4275=48+28 +78+58語言程序設(shè)計 第二章數(shù)據(jù)描述c5 各種進制之間的轉(zhuǎn)換 二進制、八進制、十六進制轉(zhuǎn)換成十進制 方法:按權(quán)相加10012345259212120212121111011)()(例1001289

3、4868381136)()(例1001231679781610162161516121)()(例af語言程序設(shè)計 第二章數(shù)據(jù)描述c6 各種進制之間的轉(zhuǎn)換(整數(shù)) 十進制轉(zhuǎn)換成二進制、八進制、十六進制 原理:的余數(shù)是2)2.22(222.22).(00012110011112011naaaaaaaaaaaaannnnnnnnnnn 方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0例 把十進制數(shù)59轉(zhuǎn)換成二進制數(shù)5922921427232120(59)10=(111011)21101111 1 1 0 1 1余余余余余余例 把十進制數(shù)159轉(zhuǎn)換成八進制數(shù)1598198280(159)10=(237)

4、82 3 7 余 7余 3余 2例 把十進制數(shù)459轉(zhuǎn)換成十六進制數(shù)4591628161160(459)10=(1cb)161 c b 余11余12余 1語言程序設(shè)計 第二章數(shù)據(jù)描述c7 二進制與八進制之間的轉(zhuǎn)換 二進制轉(zhuǎn)換成八進制:從右向左,每3位一組(不足3位左補0),轉(zhuǎn)換成八進制 八進制轉(zhuǎn)換成二進制:用3位二進制數(shù)代替每一位八進制數(shù)例 (1101001)2=(001,101,001)2=(151)8例 (246)8=(010,100,110)2=(10100110)2000 0001 1010 2011 3100 4101 5110 6111 7語言程序設(shè)計 第二章數(shù)據(jù)描述c8 二進制與

5、十六進制之間的轉(zhuǎn)換 二進制轉(zhuǎn)換成十六進制:從右向左,每4位一組(不足4位左補0),轉(zhuǎn)換成十六進制 十六進制轉(zhuǎn)換成二進制:用4位二進制數(shù)代替每一位十六進制數(shù)例 (11010101111101)2=(0011,0101,0111,1101)2=(357d)16例 (4b9e)16=(0100,1011,1001,1110)2=(100101110011110)20000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 a1011 b1100 c1101 d1110 e1111 f語言程序設(shè)計 第二章數(shù)據(jù)描述c9 字節(jié)和位 內(nèi)存

6、以字節(jié)為單元組成 每個字節(jié)有一個地址 一個字節(jié)一般由8個二進制位組成 每個二進位的值是0或101234567012345678910.語言程序設(shè)計 第二章數(shù)據(jù)描述c764325110 數(shù)值的表示方法原碼、反碼和補碼 原碼:最高位為符號位,“0”表示正,“1”表示負,其余位表示數(shù)值的大小。 反碼: 正數(shù):反碼與原碼相同 負數(shù):符號位為1,其余位對原碼取反 補碼: 正數(shù):原碼、反碼、補碼相同 負數(shù):最高位為1,其余位為原碼取反,再對整個數(shù)加1語言程序設(shè)計 第二章數(shù)據(jù)描述c1、原碼、反碼和補碼的表示方法、原碼、反碼和補碼的表示方法(1)原碼:在數(shù)值前直接加一符號位的表示法。原碼:在數(shù)值前直接加一符號

7、位的表示法。例如:例如:符號位符號位數(shù)值位數(shù)值位+7原原=00000111b-7原原=10000111b注意:注意:a.數(shù)數(shù)0的原碼有兩種形式:的原碼有兩種形式:+0原原=00000000b-0原原=10000000bb:代表的是二進制h代表的是十六進制d代表的是十進制q代表的是八進制112)反碼:)反碼:正數(shù):正數(shù)的反碼與原碼相同。正數(shù):正數(shù)的反碼與原碼相同。負數(shù):負數(shù)的反碼,符號位為負數(shù):負數(shù)的反碼,符號位為“1”,數(shù)值部分按位取反。,數(shù)值部分按位取反。例如:例如:符號位符號位數(shù)值位數(shù)值位+7反反=00000111b-7反反=11111000b注意:注意:a.數(shù)數(shù)0的反碼也有兩種形式,即的

8、反碼也有兩種形式,即+0反反=00000000b-0反反=11111111b3)補碼的表示:)補碼的表示:正數(shù):正數(shù)的補碼和原碼相同。正數(shù):正數(shù)的補碼和原碼相同。負數(shù):負數(shù)的補碼則是符號位為負數(shù):負數(shù)的補碼則是符號位為“1”,數(shù)值部分按位取反后再在末位(最低位)加,數(shù)值部分按位取反后再在末位(最低位)加1。也就是也就是“反碼反碼+1”。例如:例如:符號位符號位數(shù)值位數(shù)值位+7補補=00000111b-7補補=11111001b補碼在微型機中是一種重要的編碼形式,請注意:補碼在微型機中是一種重要的編碼形式,請注意:a.采用補碼后,可以方便地將減法運算轉(zhuǎn)化成加法運算,運算過程得到簡化。正數(shù)的采用補

9、碼后,可以方便地將減法運算轉(zhuǎn)化成加法運算,運算過程得到簡化。正數(shù)的補碼即是它所表示的數(shù)的真值,而負數(shù)的補碼的數(shù)值部份卻不是它所表示的數(shù)的真值。采用補碼即是它所表示的數(shù)的真值,而負數(shù)的補碼的數(shù)值部份卻不是它所表示的數(shù)的真值。采用補碼進行運算,所得結(jié)果仍為補碼。補碼進行運算,所得結(jié)果仍為補碼。b.與原碼、反碼不同,與原碼、反碼不同,數(shù)值數(shù)值0的補碼只有一個,即的補碼只有一個,即0補補=00000000b。c.若字長為若字長為8位,則補碼所表示的范圍為位,則補碼所表示的范圍為-128+127;進行補碼運算時,應(yīng)注意所得;進行補碼運算時,應(yīng)注意所得結(jié)果不應(yīng)超過補碼所能表示數(shù)的范圍。結(jié)果不應(yīng)超過補碼所能

10、表示數(shù)的范圍。語言程序設(shè)計 第二章數(shù)據(jù)描述c12語言程序設(shè)計 第二章數(shù)據(jù)描述cc語言中的各種數(shù)據(jù)類型 數(shù)據(jù)是程序加工、處理的對象,也是加工的結(jié)果,所以數(shù)據(jù)是程序設(shè)計中所要涉及和描述的主要內(nèi)容。程序所能夠處理的基本數(shù)據(jù)對象被劃分成一些組,或說是一些集合。屬于同一集合的各數(shù)據(jù)對象都具有同樣的性質(zhì),例如對它們能夠做同樣的操作,它們都采用同樣的編碼方式等等,把程序語言中具有這樣性質(zhì)的數(shù)據(jù)集合稱為數(shù)據(jù)類型。所有程序語言都是用數(shù)據(jù)類型來描述程序中的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)表示范圍、數(shù)據(jù)在內(nèi)存中的存儲分配等。實際上,數(shù)據(jù)類型是計算機領(lǐng)域中一個非常重要的概念,可以說是計算機科學核心概念之一。在學習程序設(shè)計的過程中,我們

11、將要不斷地與數(shù)據(jù)類型打交道。13一一、c語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型c語言規(guī)定的主要數(shù)據(jù)類型如下:數(shù)據(jù)類型基本類型整數(shù)型 .int實數(shù)型 .(浮點型)字符型 .char單精度型 .float雙精度型 .double指針類型構(gòu)造類型數(shù)組型結(jié)構(gòu)型 .struct聯(lián)合型 .union枚舉型 .enum無值類型(空類型) . void語言程序設(shè)計 第二章數(shù)據(jù)描述c14 在c語言中,任何數(shù)據(jù)對用戶呈現(xiàn)形式有兩種:常量或變量。而無論常量還是變量,都必須屬于各種不同的數(shù)據(jù)類型。c語言為每個類型定義了一個標識符,通常把它們稱為類型名。例如整數(shù)形用int標識。一個類型名由一個或幾個關(guān)鍵字組成,它與前面講的“名字

12、”不盡相同。類型名僅用于說明數(shù)據(jù)屬于哪一種類型,它并不會在程序的另一處被引用。 c語言的數(shù)據(jù)類型比其它程序語言要豐富,它有指針類型,還有構(gòu)造其它多種數(shù)據(jù)類型的能力。除了數(shù)組之外,c語言還可以構(gòu)造結(jié)構(gòu)型、聯(lián)合型和枚舉型等多種數(shù)據(jù)類型。指針類型是c語言中使用靈活,頗具特色的一種數(shù)據(jù)類型。語言程序設(shè)計 第二章數(shù)據(jù)描述c15二、常量與變量二、常量與變量(一)常量 常量是指程序在運行時其值不能改變的量,它是c語言中使用的基本數(shù)據(jù)對象之一。c語言提供的常量有:常量數(shù)值常量字符常量整形常量實型常量字符常量a字符串常量”a” 0語言程序設(shè)計 第二章數(shù)據(jù)描述c16&整型常量(整常數(shù)) 三種形式:十進制整

13、數(shù):由數(shù)字09和正負號表示.如 123,-456,0八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011十六進制整數(shù):由0 x開頭,后跟09,af,af表示. 如0 x123,0xff例 12 與 12l例 30000 為int型 65536 為long int 型 整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或l,認為它是long int 型常量問題:0123 = ( )100 x123 = ( )100xff = ( )1083291255問題:0123 = ( )100 x123 = ( )100xff = ( )10語言程序設(shè)計 第二章數(shù)據(jù)描述c17&

14、;實型常量(實數(shù)或浮點數(shù)) 表示形式:十進制數(shù)形式:(必須有小數(shù)點) 如0.123, .123, 123.0, 0.0, 123.指數(shù)形式:(e或e之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3 ,123e2, 1.23e4 , e-5 , 1.2e-3.5 實型常量的類型默認double型在實型常量后加字母f或f,認為它是float 型語言程序設(shè)計 第二章數(shù)據(jù)描述caaa18&字符常量 定義:用單引號括起來的單個普通字符或轉(zhuǎn)義字符. 字符常量的值:該字符的ascii碼值轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義nvradddtbf“xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號3位8進制數(shù)代表的字

15、符水平制表退格換頁反斜線雙引號2位16進制數(shù)代表的字符如 101 -a 012 -n 376 - x61 -a 60 -0 483 -()例:a-101-x41-65如 a65, a97, 048 , n10如 a a ? n 101 轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示例 轉(zhuǎn)義字符舉例(ch2_001.c,ch2_004.c) #include stdafx.h#include main() printf(101 x42 cn); printf(i say:how are you?n); printf(c programn); printf(v c);運行結(jié)果:(屏幕顯示)a b

16、cisay:”how are you?”c programvc例 main() printf(“yb=n”); 運行結(jié)果:屏幕顯示:=打印機輸出:19 字符常量與字符串常量不同&字符串常量 定義:用雙引號(“”)括起來的字符序列 存儲:每個字符串尾自動加一個 0 作為字符串結(jié)束標志h e l l o 0例 字符串“hello”在內(nèi)存中a a 0例 a“a”例 空串 “”0例: char ch; ch=“a”; 例: char ch; ch=a; 語言程序設(shè)計 第二章數(shù)據(jù)描述c20編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元.地址int a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)

17、地址地址.內(nèi)存1-3隨機數(shù) 變量 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,變量n; 變量初始化:定義時賦初值 例: int a,b,c; float data;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標識符例: int a=2,b,c=4; float data=3.67; char ch=a; int x=1,y=1,z=1; int x=y=z=1; 變量的使用:先定義,后使用例1 int student; stadent=19; /undefined symbol statent in function main 例2 float a,b,c; c

18、=a%b; /illegal use of floating point in function main 變量定義位置:一般放在函數(shù)開頭main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義可執(zhí)行語句main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);ch2_005.c語言程序設(shè)計 第二章數(shù)據(jù)描述c21變量名 c語言的變量在程序中用變量名表示。變量名由用戶根據(jù)其功能任意命名。變量名可以使用字符

19、集中的任何字符。變量名的長度沒有限制(87ansi標準c編譯系統(tǒng)可以最多使用31個字符)。變量名的首字符必須是英文字母(az, az)或下劃線(_),并且中間不能使用空格。變量名的其它部分可以用字母、下劃線或數(shù)字(09)組成;大小寫字母表示不同意義, 即代表不同的變量名;一般情況下,變量名使用小寫英文字母。例如,下面列出的都是正確的變名:arg, buffer, command, com_arg, file_name, count, _size, data35需要注意的是變量名不要和c語言本身使用的保留字,即語句名、類型名等重名,例如: if, swich, char, int, long,

20、static。語言程序設(shè)計 第二章數(shù)據(jù)描述c22數(shù)據(jù)類型數(shù)據(jù)類型1、整型類型 2、整型常量 c語言提供了多種整形類型,用以適應(yīng)不同情況的需要。常用的整形類型有:整形、長整形、無符號整形和無符號長整形等四種基本類型。 表格2-1整數(shù)基本類型表整形類型存儲字節(jié)最小數(shù)值范圍整形2字節(jié)-3276832767長整形4字節(jié)-21474836482147483647無符號整形2字節(jié)065535無符號長整形4字節(jié)04294967295語言程序設(shè)計 第二章數(shù)據(jù)描述c23整型變量 在c語言中,整型變量有上述整型數(shù)據(jù)所具有的四種類型:整型、長整型、無符號整型和無符號長整型。整型變量以關(guān)鍵字int作為基本類型說明符,

21、另外配合4個類型修飾符。如下 long 長類型 short 短類型 signed 有符號類型 unsigned 無符號類型 這些修飾符與int可以組合成如表2-2所示的不同整數(shù)類型。24表示2-2ansi標準規(guī)定的整型變量屬性表:數(shù)據(jù)類型占用字節(jié)數(shù)二進制位取值范圍int216-3276832767shortint216同intlongint432-21474836482147483647signedint216同intsigned shortint216同intsigned longint432同long intunsignedint2160-65535unsigned shortint216

22、同unsignedint25c語言提供的基本變量類型有:變量數(shù)值變量字符變量指針變量實型變量整型變量語言程序設(shè)計 第二章數(shù)據(jù)描述c26&整型變量 占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字 shortintlong 可用sizeof(類型標識符)測量&實型變量 float:占4字節(jié),提供7位有效數(shù)字 double:占8字節(jié),提供1516位有效數(shù)字&字符型變量 字符變量存放字符ascii碼 char與int數(shù)據(jù)間可進行算術(shù)運算例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.

23、111*/例 a=d; /* a=68; */ x=a+5; /* x=65+5; */ s=!+g /* s=33+71; */沒有字符串變量,用字符數(shù)組存放ch2_006.c語言程序設(shè)計 第二章數(shù)據(jù)描述c27例 /*ch2_003.c*/ #define pi 3.14main()int r;float l;printf(請用戶輸入半徑的長度:n);scanf(%d,&r);l=pi*r*r;printf(圓的面積為:%fn,l);宏定義變量定義輸出結(jié)果運行結(jié)果:如果半徑為:1l=3.140000語言程序設(shè)計 第二章數(shù)據(jù)描述c28 2.3不同類型數(shù)據(jù)間的轉(zhuǎn)換隱式轉(zhuǎn)換 什么情況下發(fā)生

24、運算轉(zhuǎn)換-不同類型數(shù)據(jù)混合運算時賦值轉(zhuǎn)換-把一個值賦給與其類型不同的變量時輸出轉(zhuǎn)換-輸出時轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換-實參與形參類型不一致時轉(zhuǎn)換 運算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運算時先自動轉(zhuǎn)換成同一類型語言程序設(shè)計 第二章數(shù)據(jù)描述c29doublefloatlongunsignedintchar,short低高說明:必定的轉(zhuǎn)換運算對象類型不同時轉(zhuǎn)換例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoub

25、ledoubledouble10+a +i*f - d/l例 int i; float f; double d; long l;30顯式轉(zhuǎn)換(強制轉(zhuǎn)換) 一般形式:(類型名)(表達式)例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 說明:強制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變 例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結(jié)果:x=3.600000,i=3精度損失問題較高類型向較低類型轉(zhuǎn)換時可能發(fā)生ch2_007.cch2_008.c語言程序設(shè)計 第二章數(shù)據(jù)

26、描述c31運算符和表達式運算符和表達式運算符 c語言的運算符種類多、功能強,除了常用的程序設(shè)計語言提供的算術(shù)、關(guān)系及邏輯運算符以外,還有一些完成特殊任務(wù)的運算符(操作符)。 c語言的運算符按其在表達式中與運算對象的關(guān)系(連接運算對象的個數(shù))可以分為: 單目運算:一個運算符連接一個運算對象 雙目運算:一個運算符連接兩個運算對象 三目運算:一個運算符連接三個運算對象 單目運算 例:+a; b=-a; y=!a; 雙目運算 例:a+b; c=ab; 三目運算 例:max=(ab)? a:b; 表達式?值a:值b語言程序設(shè)計 第二章數(shù)據(jù)描述c32 2.4 運算符和表達式c運算符算術(shù)運算符:(+ - *

27、 / % + -)關(guān)系運算符:( = !=)邏輯運算符:(! & |)位運算符 :( | &)賦值運算符:(= 及其擴展)條件運算符:(?:)逗號運算符:(,)指針運算符:(* &)求字節(jié)數(shù) :(sizeof)強制類型轉(zhuǎn)換:(類型)分量運算符:(. -)下標運算符:()其它 :(( ) -)語言程序設(shè)計 第二章數(shù)據(jù)描述c33學習運算符應(yīng)注意: 運算符功能 與運算量關(guān)系要求運算量個數(shù)要求運算量類型 運算符優(yōu)先級別 優(yōu)先級:指同一個表達式中不同運算符進行計算時的先后次序。結(jié)合方向 結(jié)合性:結(jié)合性是針對同一優(yōu)先級的多個運算符而言的,它是指同一個表達式中相同優(yōu)先級的多個運算應(yīng)遵

28、循的運算順序。 結(jié)果的類型語言程序設(shè)計 第二章數(shù)據(jù)描述c34運算順序優(yōu)先級運算符結(jié)合規(guī)則1() 從左到右2! + * & sizeof從右至左3* / %從左到右4+ 從左到右5從左到右6 =從左到右7= = !=從左到右8&從左到右9從左到右10|從左到右11&從左到右12| 從左到右13ab?a:c從左到右14= += = *= /= %= &= = |= = * / % - + - (2) (3) (4)說明:“-”可為單目運算符時,右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10

29、= 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 ()語言程序設(shè)計 第二章數(shù)據(jù)描述c標準c里面 % 取模運算的左邊要是整數(shù)36 37 自增、自減運算符+ -作用:使變量值加1或減1種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1)例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=

30、(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4語言程序設(shè)計 第二章數(shù)據(jù)描述c38 自增、自減運算符+ -作用:使變量值加1或減1種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1)說明: + - 不能用于常量和表達式,如5+,(a+b)+ + -結(jié)合方向: 自右向左 優(yōu)先級:- + - -* / % -+ - (2) (3) (4)例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3 例 j+k; (j+)+k;例 -i+ i=3; printf(“%d”,

31、-i+); ch2_009.c語言程序設(shè)計 第二章數(shù)據(jù)描述c39賦值運算符和表達式 簡單賦值運算符符號: =格式: 變量標識符=表達式作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量 復(fù)合賦值運算符種類:+= -= *= /= %= = = &= = |=含義: exp1 op= exp2 exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3; d=func(); c=d+2;語言程序設(shè)計 第二章數(shù)據(jù)描述c40 說明:結(jié)合方向:自右向左 優(yōu)先級: 14左側(cè)必須是變量,不能是常量或表達式 賦值表達式的值與變量值相等,且可嵌套賦值轉(zhuǎn)

32、換規(guī)則:使賦值號右邊表達式值自動轉(zhuǎn)換成其左邊變量的類型例 3=x-2*y; a+b=3;例 float f; int i; i=10; f=i;則 f=10.0例 int i; i=2.56; /結(jié)果i=2;例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表達式值為5,a,b,c值為5/ b=5;a=5/表達式值11,c=6,a=11/表達式值10,a=10,b=4,c=6/表達式值5,a=5,b=10,c=2語言程序設(shè)計 第二章數(shù)據(jù)描述c41 說明:結(jié)合方向:自右向左 優(yōu)先級: 12左側(cè)必須是變量,不能是常量或表達式 賦值表

33、達式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號右邊表達式值自動轉(zhuǎn)換成其左邊變量的類型例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等價于a=a+(a=a-(a*a)/a=0 等價于a=a+(a=a*(a=a-(a=a*3)語言程序設(shè)計 第二章數(shù)據(jù)描述c42逗號運算符和表達式 形式:表達式1,表達式2,表達式n 結(jié)合性:從左向右 優(yōu)先級: 15 逗號表達式的值:等于表達式n的值 用途:常用于循環(huán)for語句中例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3) x=a=3,6*a例 a=1;b

34、=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表達式值60/a=15,表達式值20/賦值表達式,表達式值18,x=18/逗號表達式,表達式值18,x=3/1,2,3/3,2,3語言程序設(shè)計 第二章數(shù)據(jù)描述c43逗號運算符和表達式 形式:表達式1,表達式2,表達式n 結(jié)合性:從左向右 優(yōu)先級: 15 逗號表達式的值:等于表達式n的值 用途:常用于循環(huán)for語句中例:/*ch2_6.c*/#include main() int x,y=7; float z=4; x=(y=y+6,y/z); prin

35、tf(x=%dn,x);運行結(jié)果:x=3語言程序設(shè)計 第二章數(shù)據(jù)描述c44 關(guān)系運算符和表達式 關(guān)系運算符 種類: = != 結(jié)合方向:自左向右 優(yōu)先級別:=!=優(yōu)先級6(高)優(yōu)先級7(低)例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc /a=(bc) 關(guān)系表達式的值:是邏輯值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表達式值1/表達式值1/表達式值0/d=1/f=0語言程序設(shè)計 第二章數(shù)據(jù)描述c45 關(guān)系運算注意:例 若a=0; b=0.5; x=0.3; 則 a=x278在c中是允

36、許的, 值為0例 int i=1, j=7,a; a=i+(j%4!=0); 則a=2例 a0 結(jié)果為 a100 結(jié)果為10語言程序設(shè)計 第二章數(shù)據(jù)描述c46 關(guān)系運算注意:例 注意區(qū)分“=”與“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);例 應(yīng)避免對實數(shù)作相等或不等的判斷如 1.0/3.0*3.0=1.0 結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)1e-60語言程序設(shè)計 第二章數(shù)據(jù)描述c47ab!a!ba&ba|b真假真假假假真真 邏輯運算符和表達式 邏

37、輯運算符 種類: ! & | 邏輯運算真值表c語言中,運算量: 0表示“假”, 非0表示“真”, 運算結(jié)果: 0表示“假”, 1表示“真”,真假假假假假真真假假真真真假真真語言程序設(shè)計 第二章數(shù)據(jù)描述c48! (2)& (11)| (12)高低例 a=x & xb&xy a=b|x=y !a|abl優(yōu)先級:l結(jié)合方向:! :從右向左& :從左向右| :從左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)語言程序設(shè)計 第二章數(shù)據(jù)描述c49! (2)& (11)| (12)高低l優(yōu)先級:l結(jié)合方向

38、:! :從右向左& :從左向右| :從左向右例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d值為1值為0值為1值為1值為1值為1/(53)&2|(8(4-(!0) 值為1語言程序設(shè)計 第二章數(shù)據(jù)描述c50! (2)& (11)| (12)高低l優(yōu)先級:l結(jié)合方向:! :從右向左& :從左向右| :從左向右 短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符例 a&b&c /只在a為真時,才判別b的值;

溫馨提示

  • 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

提交評論