第五十四章

類別:其他類型 作者:古都曾現 本章:第五十四章

    沙漠之城各項工作都走入正規,但自動化程度不夠。因此編程技術的發展就成為了瓶頸。

    聖主黃明決定用主要精力來發展計算機編程技術,也就是軟件工程。

    、在語言中,運算符具有優先級和結合性。

    算術運算符優先級規定為:先乘除模(模運算又叫求餘運算),後加減,括號最優先。結合性規定為:自左至右,即運算對象兩側的算術符優先級相同時,先與左邊的運算符號結合。

    關係運算符的優先級規定為:≈ap;ap;ap;g;、≈ap;ap;ap;l;、≈ap;ap;ap;g;=、≈ap;ap;ap;l;=四種運算符優先級相同,=、!=相同,但前四種優先級高於後四種。關係運算符的優先級低於算術運算符,高於賦值(=)運算符。

    邏輯運算符的優先級次序為:!、≈ap;ap;ap;ap;≈ap;ap;ap;ap;、||。

    當表達式中出現不同類型的運算符時,非(!)運算符優先級最高,算術運算符次之,關係運算符再次之,其次是≈ap;ap;ap;ap;≈ap;ap;ap;ap;和||,最低為賦值運算符。

    位操作的對象隻能是整型或字符數據型。

    表1單片機語言常用運算符

    運算符

    範例

    明

    算

    術

    運

    算內容來自單片機之家

    +

    a+b

    a變量值和b變量值相加

    -

    a-b

    a變量值和b變量值相減

    *

    a*b

    a變量值乘以b變量值

    /

    a/b

    a變量值除以b變量值

    %

    a%b

    取a變量值除以b變量值的餘數

    =內容來自單片機之家

    a=5

    a變量賦值,即a變量值等於5

    +=

    a+=b 內容來自單片機之家

    等同於a=a+b,將a和b相加的結果存回a

    -=

    a-=b

    等同於a=a-b,將a和b相減的結果存回a

    *=

    a*=b

    等同於a=a*b,將a和b相乘的結果存回a

    /=

    a/=b

    等同於a=a/b,將a和b相除的結果存回a

    %=

    a%=b

    等同於a=a%b,將a和b相除的餘數存回a 內容來自單片機之家

    ++

    a++

    a的值加1,等同於a=a+1

    --

    a--

    a的值減1,等同於a=a-1

    關

    係

    運

    算

    ≈ap;ap;ap;g;

    a≈ap;ap;ap;g;b 內容來自單片機之家

    測試a是否大於b

    ≈ap;ap;ap;l;

    a≈ap;ap;ap;l;b

    測試a是否於b

    ==

    a==b

    測試a是否等於b

    ≈ap;ap;ap;g;=

    a≈ap;ap;ap;g;=b

    測試a是否大於或等於b

    ≈ap;ap;ap;l;=

    a≈ap;ap;ap;l;=b 內容來自單片機之家

    測試a是否於或等於b

    !=

    a!=b

    測試a是否不等於b

    邏輯運算

    ≈ap;ap;ap;ap;≈ap;ap;ap;ap;

    a≈ap;ap;ap;ap;≈ap;ap;ap;ap;b

    a和b作邏輯與(and),個變量都為真時結果才為真

    ||

    a||b

    a和b作邏輯或(r),隻要有1個變量為真,結果就為真

    !

    !a

    將a變量的值取反,即原來為真則變為假,原為假則為真

    位

    操

    作

    運

    算

    >>

    a>>b

    將a按位右移b個位,高位補0 內容來自單片機之家

    <<

    a<<b

    將a按位左移b個位,低位補0

    |

    a|b

    a和b按位做或運算

    ≈ap;ap;ap;ap;

    a≈ap;ap;ap;ap;b

    a和b按位做與運算

    ^

    a^b

    a和b按位做異或運算

    ~

    ~a

    將a的每一位取反

    ≈ap;ap;ap;ap;

    a=≈ap;ap;ap;ap;b

    將變量b的地址存入a寄存器

    指針

    *

    *a

    用來取a寄存器所指地址內的值

    1

    語言程序設計都會用到高等數學知識和計算機基礎理論知識。

    使用可變參數應該有以下步驟:

    1)首先在函數定義一個va_lis型的變量,這是arg_pr,這個變量是指向參數的指針。

    )然後用va_sar宏初始化變量arg_pr,這個宏的第二個參數是第一個可變參數的前一個參數,是一個固定的參數。

    )然後用va_arg返回可變的參數,並賦值給整數j va_arg的第二個參數是你要返回的參數的類型,這是in型。

    4)最後用va_end宏結束可變參數的獲取。然後你就可以在函數使用第二個參數了。如果函數有多個可變參數的,依次調用va_arg獲取各個參數。

    語言是一門通用計算機編程語言,應用廣泛。語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

    語言程序設計基礎知識點

    1、≈ap;ap;ap;是取地址符號,≈ap;ap;ap;表示的是在內存中的地址,表示把輸入的數據放到所在的內存單元中去。

    、程序源程序擴展名為。目標程序擴展名為bj。可執行程序的擴展名為ee。

    、指針用來表示某個變量在內存儲器中的地址。

    4、十進製寫法除非要寫的整數本身就是0,否則開頭第一個數字字符不能為0

    5、八進製整常數必須以0開頭,數碼取值為0-7。八進製數通常為無符號數。

    6、十六進製數常數的前綴為0或者0。其數直碼維阿0—9,a—f或者a—f。

    二進製、八進製、十進製、十六進製之間的轉換

    7、字符串常量在內存中存儲時有串尾標記‘\0 ’,所以字符常量占一個字節的內存空間,而字符串常量占的內存字節數等於字符串中字符所占的字節數加1

    8、可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量。語言中沒有專門的字符串變量。字符串如果需要存放在變量中,需要使用字符型數組來存放。

    9、++i與i++的區別:

    n =++i;先加再賦值。n = i++;先賦值再加。eg:i = 1時,n =++i,n = ,i = ;n = i++,n = 1,i = 。

    in i = 5,j;

    j =++i+i++;

    prinf(“%d,%d”,i,j);//7,1

    j=(++i)+(++i);

    prinf(“%d,%d”,i,j);//9,17

    10、數據類型轉換;duble類型最高。

    11、

    in ,n,k;

    = 15,n = 0;

    k =(--)+(--n);

    prinf(“k =%d, =%d,n =%d”,k,,n);//k = , = 14,n = 19

    = 15,n = 0;

    k =(--)+(n--);

    prinf(“k =%d, =%d,n =%d”,k,,n);//k = 5, = 14,n = 19

    語言程序設計重點知識第一章語言概述

    1、程序的組成和形式的基本特點(p6-7)

    (1)程序是由函數構成的,一個源程序至少且僅包含一個ain函數,也可以包含一個ain函數和若幹個其他函數。

    ()一個函數由兩部分組成

    1函數的首部:即函數的第一行,包括函數名、函數類型、函數屬性、函數參數名、參數類型

    例:ina(in,iny)

    一個函數名後麵必須跟一對圓括號,括號內寫函數的參數名及其類型。函數可以沒有參數,如ain()。

    函數體:即函數首部下麵的花括號內的部分。如果一個函數內有多個花括號,則最外層的一對花括號為函數體的範圍。函數體一般包括:聲明部分、執行部分、運行程序的步驟及每個步驟生成文件的類型及特點(p7)

    第二章算法

    1、算法的定義

    一個程序應包括數據結構即對數據的描述;算法也就是操作步驟。計算機算法可分為兩大類:數值運算算法和非數值運算算法。

    、算法的特性(p19)

    1有窮性;

    確定性;

    有零個或多個輸入;

    4有一個或多個輸出;

    5有效性。

    、描述算法的常用方法(p0-)

    1自然語言;

    用流程圖表示算法。

    n—s圖

    4計算機語言

    5偽代碼

    4、程序算法的種基本結構及其共同特點(p4-5)

    三種基本結構:

    1順序結構:最基本;

    選擇結構:又稱選取結構或分支結構;

    循環結構:又稱重複結構;

    1當(hile)型循環;

    直到(unil)型循環。

    共同特點:

    1隻有一個入口;

    隻有一個出口;

    結構內的每一部分都有機會被執行到;

    4結構內不存在“死循環”。

    5、結構化程序設計的設計原則(p4)

    1自頂向下;

    逐步細化;

    模塊化設計;

    4結構化編碼。

    第三章數據類型、運算符與表達式

    1、語言的基本數據類型和構造數據類型(p7)

    在程序中對用到所有數據都必須製定其數據類型。數據有常量和變量之分,它們分別屬於以上這些類型。

    、字麵常量和符號常量(p7-8)

    在程序運行過程中,其值不能被改變的量稱為常量,常量區分為整型常量和實型常量,常量一般從其字麵形式即可判別,這種常量稱為字麵常量或者直接常量。

    用一個標識符代表一個常量的符號,稱為符號常量,即以標識符形式出現的常量(常量的表示用大寫字母,變量的表示用寫字母),符號常量與變量不同,符號常量的值在其作用域內部能改變,也不能再被賦值,如果再用賦值語句給符號常量賦值是錯誤的。使用符號常量的好處:1含義清楚在需要改變一個常量時能做到“一改全改”

    、標識符的命名規則(p9-40)

    語言規定標識符隻能有字母、數字和下劃線中字符組成,且第一個字符必須為字母或下劃線,合法的標識符可以作為變量名。編譯係統將大寫字母和寫字母認為是兩個不同的字符。變量名的長度最好不要超過8個字符。在語言中,要求對所有用到的變量做牆紙定義,也就是“先定義,後使用”,1凡未被事先定義的,係統不把它認作變量名,這就能保證程序中變量名使用得正確。每一個變量被指定為一個確定類型,在編譯時就能為其分配響應的存儲單元。指定每一變量數以一個類型,這就便於在編譯時據此檢查在程序中要求對該變量進行的運算是否合法。例a%b是“求餘”得到a/b的餘數

    4、整型常量的種表示方式、整型變量的分類及其定義方式、整型常量的類型(p41-44)

    整型常量即整常數的種表示方式:

    1十進製整數;

    八進製整數(以0開頭);

    十六進製整數(以0開頭)。

    整型變量的分類:整型變量的基本類型符為in,根據數值的範圍將變量定義為基本整型

    in、短整型shrin/shr、長整型lngin/lng在實際應用中,變量的值常常是正的,為充分利用變量的值的範圍,可以將變量定義為“無符號/unsigned”類型,以指定是“無符號數”,或者為“有符號/signed”。如果前無符號,默認為有符號(signed)歸納起來,可以用一下六種整形變量:

    1有符號基本整型signedin

    無符號基本整型unsignedin

    有符號短整型signedshrin

    4無符號短整型unsignedshrin

    5有符號長整型signedlngin

    6無符號長整型unsignedlngin

    整型常量的類型:

    1一個整數,如果其值在-768~14748647範圍內,則認為它是in型,它可以賦值給in型和lngin型變量

    一個整數,如果其值超過了上述範圍,而在-14748648~14748647範圍內,則認為它是長整型,可以將它複製給一個lngin型變量

    一個整常量後麵加一個字母u或u,可以認為是unsignedin型,如1456u

    4在一個整常量後麵加一個字母l或l,則認為是lngin型常量,如1l、1l

    5、浮點型常量的種表示方式、浮點變量的分類及其定義方式、浮點常量的類型(p45-47)浮點型常量的種表示方法:浮點數就是實數,有兩種形式

    1十進製數形式。(由數字和數點組成,必須有數點)

    指數形式。如1e或1e代表110注意字母e/e之前必須有數字,且e後麵的指數必須為整數,一個浮點數可有多種指數表示方法

    浮點變量的分類:

    1單精度(fla型):有效數字6~7

    雙精度(duble型):有效數字158~16

    長雙精度型(lngduble型):有效數字18~19

    浮點變量的定義方式:fla,y;類似

    浮點常量的類型:如果在數的後麵加字母f或f(如165f),編譯係統會把它們按單精度處理。一個浮點型常量可以賦給一個fla型、duble型或lngduble型變量,根據變量類型截取實型常量中相應的有效位數字。

    例如:flaa;

    a=111111111;

    由於f型變量隻能接受7位有效數字,因此最後兩位數不起作用。如果a改為duble型,則能全部接受上述9位數字,並儲存在變量a中。

    6、字符常量的種形式、字符變量、字符串常量(p48-5)

    字符常量的種形式:

    1語言的字符常量是用單撇號括起來的一個字符。如‘a’

    常用的以“\”開頭的特殊字符如下

    字符變量:字符變量用來存放字符常量,它隻能放一個字符,不能存放字符串例har1,;1=‘a’;=‘b’;一個字符變量在內存中占一個字節。

    寫字母的asii碼比它的大寫字母asii碼大,大變為大

    7、變量初始化的時間(p5)

    語言允許在定義變量的同時使變量初始化。(ina=;flaf=56;har=‘a’)也可以使被定義的變量的一部分賦初值(ina,b,=5;)

    如果對幾個變量賦予同一個初始值,應寫成:ina=,b=,=;不能寫成ina=b==;初始化不是在編譯階段完成的,而是在程序運行時執行本函數時賦初值的,相當於有一個複製語句。(ina=;)

    8、各類型數據間的混合運算(p54)

    整型、浮點型、字符型數據間可以混合運算

    9、語言的運算符及其優先級和結合性(p55)

    特殊%,模運算符或稱求餘運算符,%兩側均應為整型數據,且兩個整數相除的結果為整數,如5%為1,舍去數部分算術運算符的結合方向為自左至右或左結合性,並且先乘除後加減

    10、強製類型轉換(p56)(duble)a;(in)(+y);11、自增、自減運算(p57)i++或++i

    1自增自減運算符隻能用於變量,不能用於常量或表達式。例

    ++(i-1)為錯

    ++和—的結合方向是自右至左,例-i++合法,先輸出-i再加一,(-i)++不合法

    例:i=;a=i++;b=i++;=i++;d=a+b+;最終輸出d=1

    i+++j相當於(i++)+j,盡可能多的自左至右

    1、賦值運算符、複合賦值運算符、賦值表達式(p59-64)賦值運算符就是“=”

    1將浮點型數據(單雙精度)賦給整型變量時,舍棄浮點數的數部分

    將整型數據賦給單雙精度時,數值不變,但以浮點數形式存儲到變量中,如將賦值給fla就得到00000

    將一個duble型數據賦給fla變量時,截取其前麵7位有效數字,存放到fla變量中。例:flaf;dubled=1456789e100;f=d;就出現溢出錯誤

    將一個fla型數據賦給duble變量時候,數值不變,有效位數擴展到16位,在內存中以8個字節存儲

    4字符型數據賦給整型變量

    5in、shr、lng型數據賦給har變量例如ini=89;har=‘a’;=i;

    6將帶有逗號的整型數據in賦給lng型變量時,啊喲進行符號擴展,將整型數據16位送到lng型低16位中,如果in型數為正值,則lng型變量的高16位補零;如果in型變量為負值(符號位為1),則lng型變量的高16位補1,以保持數值不變,反之如果將一個lng型數據賦給一個in型變量,值將ng型數據中低16位原封不動地送到整型變量(截斷)

    7unsignedin型數據賦給lngin型變量時,不存在符號擴展問題

    8將非unsigned型數據賦給長度相同的unsigned型變量,也是原樣賦值複合賦值運算符:a+=等價於a=a+;a+=b+等價於a+=(b+)

    9賦值表達式一般形式《變量》《賦值運算符》《表達式》賦值運算符左邊的叫左值,右邊的叫右值,凡是左值都可以作為右值賦值表達式作為左值時應加括號

    賦值運算符按照“自右至左”的結合順序(a=*5)=4*先執行括號內能的運算,將15賦給a,然後執行4*的運算,得1,再把1賦給a,故整個表達式的值為1賦值表達式也可以包含複合的賦值運算符a+=a-=a*a先進行右邊賦值表達式的計算,相當於a=a-a*a將a初值帶入計算a,再進行左邊賦值表達式的計算

    1、逗號運算符及其優先級、逗號表達式

    逗號表達式一般形式表達式1,表達式

    賦值運算符的級別高於逗號運算符a=*5,a*4a的值為15,表達式的值為60=(a=,6*)

    賦值表達式,將逗號表達式的值賦給,的值等於18=a=,6*

    逗號表達式,的值為,整個逗號表達式的值為18

    第四章順序結構程序設計

    1、語句的分類(p69-71)

    1、控製語句9種

    if…else…/fr…/hile…/d…hile/ninue/break/sih/g/reurn

    、函數調用語句。函數調用語句由一個函數調用加一個分號構成

    prinf(“4561”)

    、表達式語句。表達式語句由一個表達式加一個分號構成,a=4、空語句5、複合語句

    、賦值語句(p71)if((a=b)》0)=a;先將b的值賦給a,如果a大於0,則=a、puhar()、gehar()函數(p7-74)

    puhar函數(字符輸出函數)作用是向終端輸出一個字符。其一般形式為puhar()

    puhar函數可以在屏幕上輸出字符,也可以輸出控製字符,如puhar(‘

    ’)作用是輸出一個換行符,使輸出的當前位置移到下一行的開頭

    gehar函數(字符輸入函數)的作用是從終端輸入一個字符,其一般形式為gehar()例如har;=gehar();puhar();此時屏幕上將輸出的輸入值4、prinf()、sanf()函數及其對應的格式控製符(p74-86)prinf格式輸出函數,作用是向終端輸出若幹個任意類型的數據一般格式為prinf(“格式控製”,輸出表列)例prinf(“%d,%

    ”,i,)格式控製作用:

    1格式明(%。):將輸出的數據轉換為指定的格式輸出

    普通字符。按原樣輸出格式控製中的普通字符按原樣輸出例prinf(“%d%d”,a,b)prinf(“a=%db=%d”,a,b)

    在第二個函數中雙引號內的字符,除了兩個%d以外,其他的普通字符按原樣輸出,如果a,b的值分別為,4,則輸出為a=b=4中間有空格格式字符:

    1d格式符。%d按十進製整數數據實際長度輸出;%d指定寬度(位數),如果數據位數於,則左端補空格;%ld長整型數據格式符。以八進製整數形式輸出格式符。以十六進製數形式輸出

    4u格式符。以十進製整數形式輸出無符號數

    5格式符。用來輸出一個字符,一個整數,隻要它的值在0~55之間,也可以用%使之按字符形式輸出,在輸出前,係統會將該整數作為asii碼轉換成相應的字符;反之,一個字符數據也可以用整數形式輸出。

    6s格式符。用來輸出一個字符串。%s;%s,輸出的字符串占列,如果字符串本身長度大於,則突破限製,將字符串全部輸出,如果於,則左補空格;%-s,如果串長於,則在列範圍內,字符串向左靠,右補空格;%ns,輸出列,但隻取字符串左端n個字符。這n個字符輸出在列右側,左補空格;%-ns,取n個字符輸出在列範圍的左側,右補空格,如果n》,則自動取n值,即保證n個字符正常輸出

    7f格式符。用來輸出實數(包括單雙精度),以數形式輸出。%f,不指定字段寬度,使整數部分全部輸出,並輸出6位數。但注意,在輸出的數字中並非全部數字都是有效數字,單精度實數的有效數字一般為7位;%nf,指定輸出的數據共占列,其中有n位數。如果數值長度於,則左端補空格;%-nf與%nf基本相同,隻是使輸出的數值向左端靠,右端補空格。

    8e格式符。以指數形式輸出實數

    9g格式符。用來輸出實數,根據數值的大,自動選f格式或者e格式,且不輸出無意義的零。p80

    注意:除了,e,g外,其他格式字符必須用寫字母;可以在格式控製字符串內包含轉義字符;格式符之間可以加入修飾符;用連續兩個%來輸出%sanf(格式控製,地址表列)sanf(“%d%d%d”,≈ap;ap;a,≈ap;ap;b,≈ap;ap;)

    ≈ap;ap;為地址運算符,≈ap;ap;a指a在內存中的地址。

    1用%d%d%d輸入數據時不能用逗號做兩個數據間的分隔符可用空格

    如果%d和%d之間有n個空格,則輸入時對應的位置應該有多於n個空格來分隔

    總之,%d與%d之間有什簡單符號,輸入信息時候就要將這些符號加上,或者格式控製是a=%d,則輸入數據時候也得輸入a=某個數據

    用%格式輸入字符時候,空格字符和轉義字符都作為有效字符輸入例如:sanf(“%%%”,≈ap;ap;1,≈ap;ap;,≈ap;ap;);若輸入“a空格b空格”則1為a,為空格,為b,正確的輸入法為“ab”字符間沒有空格

    在輸入數據時候,遇到以下情況時,認為該數據結束遇空格,或按回車,或跳格鍵;指定寬度結束,如%d;遇非法輸入

    第五章選擇結構程序設計

    1、關係運算符及其優先級和結合性、關係表達式(p91-9)


>>章節報錯<<

如果您喜歡,請把《沙漠稱霸記》,方便以後閱讀沙漠稱霸記第五十四章後的更新連載!
如果你對沙漠稱霸記第五十四章並對沙漠稱霸記章節有什建議或者評論,請後台發信息給管理員。