C語言C基礎(chǔ)數(shù)據(jù)類型和語法_第1頁
C語言C基礎(chǔ)數(shù)據(jù)類型和語法_第2頁
C語言C基礎(chǔ)數(shù)據(jù)類型和語法_第3頁
C語言C基礎(chǔ)數(shù)據(jù)類型和語法_第4頁
C語言C基礎(chǔ)數(shù)據(jù)類型和語法_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心C語言基礎(chǔ)主講老師:歐陽堅 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心目錄概述 C語言的昨天和今天程序、編程語言和職業(yè)程序員C編碼風(fēng)格常量、變量、數(shù)據(jù)類型和表達(dá)式 C函數(shù)那點事 分支語句循環(huán)語句 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心概述 C語言的昨

2、天和今天 C語言的昨天 C語言的歷史可以追溯到1969年。 在1969年,美國貝爾實驗室的Ken Thompson為DEC PDP-7計算機(jī)設(shè)計了一個操作系統(tǒng)軟件,這就是最早的UNIX。接著,他又根據(jù)劍橋大學(xué)的Martin Richards設(shè)計的BCPL語言為UNIX設(shè)計了一種便于編寫系統(tǒng)軟件的語言,命名為B。B語言是一種無類型的語言,直接對機(jī)器字操作,這一點和后來 的C語言有很大不同。作為系統(tǒng)軟件編程語言的第一個應(yīng)用,Ken Thompson使用B語言重寫了其自身的解釋程序。 19721973年間,同在貝爾實驗室的Denis Ritchie改造了B語言,為其添加了數(shù)據(jù)類型的概念,并將原來的解

3、釋程序改寫為可以在直接生成機(jī)器代碼的編譯程序,然后將其命名為C。1973 年,Ken Thompson小組在PDP-11機(jī)上用C重新改寫了UNIX的內(nèi)核。與此同時,C語言的編譯程序也被移植到IBM 360/370、Honeywell 11以時VAX-11/780等多種計算機(jī)上,迅速成為應(yīng)用最廣泛的系統(tǒng)程序設(shè)計語言。 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心Ken Thompson(大胡子) 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)

4、技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心Ken Thompson和Denis R 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心 C語言的今天今天,C語言主要用于嵌入式開發(fā)與Unix/Linux操作系統(tǒng)及驅(qū)動的開發(fā) 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心程序、編程語言和職業(yè)程序員C編碼風(fēng)格 千鋒千鋒3G嵌入式移

5、動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心什么是程序? 程序由一系列指令(Instruction)組成,指令是指示計算機(jī)做某種運(yùn)算的命令,通常包括以下幾類: 輸入(輸入(Input) 從鍵盤、文件或者其它設(shè)備獲取數(shù)據(jù)。 輸出(輸出(Output) 把數(shù)據(jù)顯示到屏幕,或者存入一個文件,或者發(fā)送到其它設(shè)備。 基本運(yùn)算基本運(yùn)算 執(zhí)行最基本的數(shù)學(xué)運(yùn)算(加減乘除)和數(shù)據(jù)存取。 測試和分支測試和分支 測試某個條件,然后根據(jù)不同的測試結(jié)果執(zhí)行不同的后續(xù)指令。 循環(huán)循環(huán) 重復(fù)執(zhí)行一系列操作。 對于程序來說,有上面這幾類指令就足夠了。你曾用過的任何一個程序,不管它有多么復(fù)雜,都是由這幾類指令組成的。www

6、. 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心什么是編程語言? 編程語言(Programming Language)分為低級語言(Low-level Language)和高級語言(High-level Language)。機(jī)器語言(Machine Language)和匯編語言(Assembly Language)屬于低級語言,直接用計算機(jī)指令編寫程序。而C、C+、Java、Python等屬于高級語言,用語句(Statement)編寫程序,語句是計算機(jī)指令的抽象表示。 www.mobiletrain.or

7、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心職業(yè)程序員C編碼風(fēng)格職業(yè)程序員應(yīng)用的C編碼風(fēng)格 縮進(jìn)和空白 注釋 標(biāo)識符命名規(guī)范 函數(shù) indent工具 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心常量、變量、數(shù)據(jù)類型和表達(dá)式 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心常量與變量在程序中值不能夠更改的量叫做常量。相對的,值可以更改的量叫做變

8、量。例如:int a;a = 1;上述語句中,a是變量,而1是常量。 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心C語言中的常量C語言中常量的形式:整型常量:1,-1,0 xff,077實型常量:1.0,-1.0字符型常量:c, A, ,字符串型常量:“hello”, “你好啊” 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心常量問題“你你”這個漢字算是字符呢還是這個漢字算是字符呢還是字符串呢?字符串呢

9、?注意漢字字符和注意漢字字符和ASCII字符的區(qū)字符的區(qū)別。別。 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心C語言中的變量C語言中的變量的值可以改變,例如:int a; a = 1; a = -1;a a 第一次賦值 第二次賦值1-1 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心使用變量需要注意的問題 C語言中的變量必須“先聲明,再引用”。正確的用法:int a; a = 1;錯誤的用法:a = 1

10、; 在聲明變量時注意不要忘記指定變量的類型。 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心數(shù)據(jù)類型C語言中的數(shù)據(jù)類型分為三種:基本類型:整型,實型,字符型等復(fù)雜類型:數(shù)組,指針,結(jié)構(gòu)體,枚舉等特殊類型:空類型 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心整型數(shù)據(jù)數(shù)據(jù)類型名C語言中的關(guān)鍵字整型int無符號整型unsigned int短整型short 無符號短整型unsigned short長整型long

11、無符號長整型unsigned 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心整型數(shù)據(jù)的大小使用sizeof關(guān)鍵字判斷一個數(shù)據(jù)類型的大小#include int main(void)printf(“int %d, short %d, long %dn”, sizeof(int), sizeof(short), sizeof(long);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)

12、中心整型數(shù)據(jù)的大小類型名類型所占用的字節(jié)數(shù)16位cpu 32位cpu 64位cpuint244unsigned int244short222unsigned short222long448unsigned 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心整型數(shù)據(jù)表示的有效范圍類型名類型所占用的字節(jié)數(shù) 16位 32位 64位int-32768,32767-2147483648,2147483647-2147483648,2147483647unsigned int0,655350,429

13、49672950,4294967295short-32768,32767-32768,32767-32768,32767unsigned short0,655350,655350,65535long-2147483648,2147483647-2147483648,2147483647-922674973657530368,922674973657530367unsigned long0,42949672950,42949672950,1845349947315060735 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式

14、移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心二進(jìn)制與十六進(jìn)制 二進(jìn)制:逢二進(jìn)一 0, 1, 10, 11, 100, 101, 110, 111 由數(shù)字電路特性決定 十六進(jìn)制:逢十六進(jìn)一 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1a, 1b, 1c, 1d, 1e, 1f, 20, 21, 22 可以表示同樣的數(shù)值,但是表示方式不同 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心二進(jìn)制與十

15、六進(jìn)制 二進(jìn)制轉(zhuǎn)十六進(jìn)制0 = 0, 1 =1 10 = 2, 11 = 3100 = 4, 101 = 5, 110 = 6, 111 = 71000 = 8, 1001 = 9, 1010 = a, 1011 = b1100 = c, 1101 = d, 1110 = e, 1111 = f 從低開始,每四位為一個單位來轉(zhuǎn)換10 1100 1001 1010 = 2c9a101 1000 1011 1001 1100 = 58 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心二進(jìn)制與十六進(jìn)制

16、 十六進(jìn)制轉(zhuǎn)二進(jìn)制 每一位轉(zhuǎn)換成 4 個二進(jìn)制位 1234abcd =0001 0010 0011 0100 1010 1011 1100 1101 加減法與十進(jìn)制規(guī)則一樣 1 a 3 4+ 8 2 d 7- 9 d 0 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心整數(shù)表示 變量在內(nèi)存當(dāng)中使用二進(jìn)制表示 構(gòu)成內(nèi)存的數(shù)字電路是一個一個的門 有符號整數(shù)表示:高位表示符號,正負(fù),其它位表示數(shù)值 問題:正負(fù) 解決辦法:使用補(bǔ)碼 正數(shù)的補(bǔ)碼就是原碼自身 負(fù)數(shù)的補(bǔ)碼:相反數(shù)的原碼取反加www.mobile

17、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心整數(shù)表示 有符號數(shù)表示5: 0000 0000 0000 0000 0000 0000 0000 0101取反加 1-5: 1111 1111 1111 1111 1111 1111 1111 1011 無符號數(shù)32/64 全部用于表示數(shù)值 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心浮點數(shù)表示 階碼和底數(shù)分別表示 例如: 32 位機(jī)器IEEE754標(biāo)準(zhǔn)www.mobilet

18、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心不同長度之間的整數(shù)轉(zhuǎn)換 當(dāng)短整型轉(zhuǎn)換為長整型時int long, short int會發(fā)生位擴(kuò)展,保證轉(zhuǎn)換后數(shù)值的正確性 當(dāng)長整型轉(zhuǎn)換為短整型時 long int, int short會發(fā)生“截斷”,舍去高位字節(jié)的內(nèi)容 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心類型轉(zhuǎn)換 類型轉(zhuǎn)換不改變內(nèi)存當(dāng)中的二進(jìn)制數(shù)值 解釋方法不同 例如:對于-,強(qiáng)制轉(zhuǎn)換成無符號分別打印新舊數(shù)值和用十六進(jìn)

19、制的打印內(nèi)存表示 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心驗證第一種情況#include int main(void)int a;short b =0 x1234;a = b;printf(“%xn”, a);b = -0 x12;a = b;printf(“%xn”, a);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心驗證第二種情況#include int main(void

20、)short a;int b = 0 x12345678;a = b;printf(“%xn”, a);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心整型數(shù)據(jù)的效率整型數(shù)據(jù)是計算機(jī)最喜歡的數(shù)據(jù)類型。比較兩個循環(huán)int i;for(i = 0; i 10; i+)和float f;for(f = 0.0; f 10.0; f += 1.0) 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心

21、實型數(shù)據(jù)類型名C語言中的關(guān)鍵字浮點型float雙精度型double長雙精度型long 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心實型數(shù)據(jù)的大小類型占用字節(jié) 有效數(shù)字?jǐn)?shù)值范圍(有效數(shù)字;尾數(shù)數(shù)量級,10的冪數(shù))float467-3.4,3.4-38,38double81516-1.7,1.7-308,308long double 161819-1.2,1.2-4932,4932 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)

22、研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心 使用實型數(shù)據(jù)需要注意的問題實型運(yùn)算不是完全準(zhǔn)確的,應(yīng)避免一個很大的數(shù)和一個很小的數(shù)的運(yùn)算#include int main(void)float a, b;a = 123456.789e5;b = a + 20;printf(“%fn”, b);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心字符型數(shù)據(jù)(1)常量C, c, ,等等(2)變量char ch;注意,轉(zhuǎn)義字符是特殊的字符型常量。 0, n, 等等

23、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心字符型數(shù)據(jù)#include int main(void)char ch = a;printf(“%cn”, ch);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心常用的轉(zhuǎn)義字符字符形式含義n換行,當(dāng)前位置在下一行開頭t當(dāng)前位置跳到下一個制表位r回車,當(dāng)前位置移到本行開頭表示一個“表示一個“ddd表示一個八進(jìn)制形式的ASCII碼xhh表示一個十六進(jìn)制形式的ASCII碼www.m

24、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心字符型數(shù)據(jù) 字符型數(shù)據(jù)的大小字符型數(shù)據(jù)占用一個字節(jié)。 字符型數(shù)據(jù)的本質(zhì)是整數(shù)一個字符型數(shù)據(jù)實際上是一個小整數(shù),其范圍在-127127之間。 ASCII碼表示的可見字符都是整數(shù),區(qū)別于EOF(-1)。 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心字符型數(shù)據(jù)#include int main(void)char ch = a;printf(“%c, %dn”, ch,

25、ch);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心字符型數(shù)據(jù)#include int main(void)char ch = 071;printf(“%c, %dn”, ch, ch);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心字符串和字符的區(qū)別區(qū)別字符型常量a和字符串常量“a”。a代表一個字符a。“a”代表一個字符a和一個結(jié)束符0。字符a占一個字節(jié),而字符

26、串a(chǎn)占用兩個字節(jié)。所以一下寫法是錯誤的:char ch;ch = “a”; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心綜合實例a + 1 a永遠(yuǎn)正確嗎?嘗試下列表達(dá)式:unsigned int a = 0 xffffffff;a = a + 1; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心C表達(dá)式算術(shù)運(yùn)算符+(加法運(yùn)算符)-(減法運(yùn)算符)*(乘法運(yùn)算符)/(除法運(yùn)算符)%(求余運(yùn)算符)www.mo

27、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心算術(shù)運(yùn)算符實例#include Int main(void)printf(“add %d, sub %d, mul %d, div %d, mod %d”, 3 + 2, 3 2, 3 * 2, 3 / 2, 3 % 2);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心算術(shù)運(yùn)算符需要注意的是,進(jìn)行整數(shù)運(yùn)算時(1)除法運(yùn)算和數(shù)學(xué)中的除法中不一樣,除法

28、運(yùn)算只保留整數(shù)部分。例如:5 / 2的值是2,而不是2.5(2)求余運(yùn)算只能用于整數(shù),例如:5 % 2的值是1,而5.2 % 2.3這種寫法是錯誤的 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心算術(shù)運(yùn)算符C語言進(jìn)行混合運(yùn)算時的隱式類型轉(zhuǎn)換考慮以下實例:int i = 1;float f = 2.0;double d = 3.0;long l = 2; 10 + a + i * f d / l 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)

29、技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心算術(shù)運(yùn)算符高double floatlongunsigned int低intshortchar 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心基本表達(dá)式關(guān)系運(yùn)算符(大于)=(等于)=(大于等于) b)printf(“a bn”);else if(a = b)printf(“a = bn”);elseprintf(“a bn”); 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)

30、技術(shù)研發(fā)中心關(guān)系運(yùn)算符需要注意的是在C語言里“=”代表賦值,而“=”代表等于??紤]下面例子:char ch = c;要判斷ch 是否等于字符c有兩種寫法:ch = c和c = 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心自增(減)運(yùn)算符自增+、自減-int i, j;j = i+; j = i-;比較+i和i+的區(qū)別 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心自增(減)運(yùn)算符需要注意的問題:(

31、1)自增(減)運(yùn)算符本質(zhì)上一個加(減)法和賦值的結(jié)合。例如:i+i = i + 1;所以不能對常量進(jìn)行自增(減)運(yùn)算。(2)自增(減)運(yùn)算符自右向左結(jié)合試分析+i+ 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心基本表達(dá)式避免容易混淆的寫法 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心強(qiáng)制類型轉(zhuǎn)換一般寫法:(類型名)(表達(dá)式)(double)i i轉(zhuǎn)換為雙精度(int)(x + y) x + y 的和轉(zhuǎn)

32、換為整型(float)(5 % 3) 5 % 3的值轉(zhuǎn)換為浮點型 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心強(qiáng)制類型轉(zhuǎn)換(1)(int)x + y只將x的值轉(zhuǎn)換為int型,如想將x + y的和轉(zhuǎn)換為int型,則需要寫成(int)(x + y);(2)(int)x對x的值沒有影響。例如:float f;int i = (int)f;原來的f還是float型(3)強(qiáng)制類型轉(zhuǎn)換在指針類型轉(zhuǎn)換中使用很多。 千鋒千鋒3G嵌入式移動互

33、聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心強(qiáng)制類型轉(zhuǎn)換的實例#include Int main(void)float f = 3.6;int i = (int)f;printf(“f %f, i %dn”, f, i);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心指針強(qiáng)制類型轉(zhuǎn)換#include int main(void)int i = 0 x1234578;int *p = &i;printf(“int %d, short %d, char %d”, *p, *(

34、short *)p), *(char *)p);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心賦值運(yùn)算符一般形式:變量 賦值運(yùn)算符表達(dá)式注意的是賦值表達(dá)式的值是賦值運(yùn)算符右邊表達(dá)式的值,例如:int a; a = 2;那么a = 2這個表達(dá)式的值就是2。所以可以出現(xiàn)連續(xù)賦值,例如:int a , b; b = a =2;那么,a和b的值都是2. 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研

35、發(fā)中心賦值運(yùn)算符如果無符號數(shù)賦值給有符號數(shù)的話:int a;unsigned int b = 0 xffffffff;a = b;如果有符號數(shù)賦值給無符號數(shù)的話:int a = -1;unsigned int b;b = a; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心復(fù)合的賦值運(yùn)算符+=、-=、*=、/=、%=例如:a += 3; a = a + 3;a -= 3; a = a - 3;假如:int a;a += 3.6;那么a的值是什么呢?www.emb

36、 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心逗號運(yùn)算符表達(dá)式1,表達(dá)式2,表達(dá)式3,表達(dá)式n例如:2 + 1, 3 / 2, 4 1;以上表達(dá)式的值是最后一個表達(dá)式的值。int j;j = (2 + 1, 3 / 2, 4 1);那么j的值是3。 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心邏輯表達(dá)式邏輯與 &邏輯或 |邏輯非 !(1)理解對照真值表(2)邏輯表達(dá)式具有“短路”計算的特性邏輯表達(dá)式舉例:a b & a b ? b :

37、a; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心?:的結(jié)合性?:的結(jié)合性從右向左結(jié)合。是分析下例:a b ? a : c d ? c :d相當(dāng)于如下結(jié)合方式:a b ? a : ( c d ? c :d ) 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心 綜合實例#include int main(void)int x = 2, y, z;x *= (y = z = 5); printf(“%d”,

38、x);z = 3; printf(“%d”, x);x = (y = z); printf(“%d”, x);x = (y = z); printf(“%d”, x);x = (y & z); printf(“%d”, x);x = (y | z); printf(“%d”, x);return 0; 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心 綜合實例x = x + 1;x += 1;哪個效率更高一些呢? 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心 綜合實例int a;int i = 10;a = i+;a和i的值各是多少呢?int a = 3;int i = 10;!a & i+a和i的值各是多少呢? 千鋒千鋒3G嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心嵌入式移動互聯(lián)網(wǎng)技術(shù)研發(fā)中心 綜合實例#include int main(void)unsigned int a = 6;int b = -20;(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論