沙漠之城各項工作都走入正規,但自動化程度不夠。因此編程技術的發展就成為了瓶頸。
聖主黃明決定用主要精力來發展計算機編程技術,也就是軟件工程。
、在c語言中,運算符具有優先級和結合性。
算術運算符優先級規定為:先乘除模(模運算又叫求餘運算),後加減,括號最優先。結合性規定為:自左至右,即運算對象兩側的算術符優先級相同時,先與左邊的運算符號結合。
關係運算符的優先級規定為:>、<、>=、<=四種運算符優先級相同,=、!=相同,但前四種優先級高於後四種。關係運算符的優先級低於算術運算符,高於賦值(=)運算符。
邏輯運算符的優先級次序為:!、&&、||。
當表達式中出現不同類型的運算符時,非(!)運算符優先級最高,算術運算符次之,關係運算符再次之,其次是&&和||,最低為賦值運算符。
位操作的對象隻能是整型或字符數據型。
表1單片機c語言常用運算符
運算符
範例
說明
算
術
運
算內容來自單片機之家www.dpj100.com
+
a+b
a變量值和b變量值相加
-
a-b
a變量值和b變量值相減
*
a*b
a變量值乘以b變量值
/
a/b
a變量值除以b變量值
%
a%b
取a變量值除以b變量值的餘數
=內容來自單片機之家www.dpj100.com
a=5
a變量賦值,即a變量值等於5
+=
a+=b 內容來自單片機之家www.dpj100.com
等同於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 內容來自單片機之家www.dpj100.com
++
a++
a的值加1,等同於a=a+1
--
a--
a的值減1,等同於a=a-1
關
係
運
算
>
a>b 內容來自單片機之家www.dpj100.com
測試a是否大於b
<
a<b
測試a是否小於b
==
a==b
測試a是否等於b
>=
a>=b
測試a是否大於或等於b
<=
a<=b 內容來自單片機之家www.dpj100.com
測試a是否小於或等於b
!=
a!=b
測試a是否不等於b
邏輯運算
&&
a&&b
a和b作邏輯與(and),2個變量都為真時結果才為真
||
a||b
a和b作邏輯或(or),隻要有1個變量為真,結果就為真
!
!a
將a變量的值取反,即原來為真則變為假,原為假則為真
位
操
作
運
算
>>
a>>b
將a按位右移b個位,高位補0 內容來自單片機之家www.dpj100.com
<<
a<<b
將a按位左移b個位,低位補0
|
a|b
a和b按位做或運算
&
a&b
a和b按位做與運算
^
a^b
a和b按位做異或運算
~
~a
將a的每一位取反
&
a=&b
將變量b的地址存入a寄存器
指針
*
*a
用來取a寄存器所指地址內的值
1
c語言程序設計都會用到高等數學知識和計算機基礎理論知識。
使用可變參數應該有以下步驟:
1)首先在函數裏定義一個va_list型的變量,這裏是arg_ptr,這個變量是指向參數的指針。
2)然後用va_start宏初始化變量arg_ptr,這個宏的第二個參數是第一個可變參數的前一個參數,是一個固定的參數。
3)然後用va_arg返回可變的參數,並賦值給整數j. va_arg的第二個參數是你要返回的參數的類型,這裏是int型。
4)最後用va_end宏結束可變參數的獲取。然後你就可以在函數裏使用第二個參數了。如果函數有多個可變參數的,依次調用va_arg獲取各個參數。
c語言是一門通用計算機編程語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
c語言程序設計基礎知識點
1、&是取地址符號,&x表示的是x在內存中的地址,表示把輸入的數據放到x所在的內存單元中去。
2、c程序源程序擴展名為.c。目標程序擴展名為.obj。可執行程序的擴展名為.exe。
3、指針用來表示某個變量在內存儲器中的地址。
4、十進製寫法除非要寫的整數本身就是0,否則開頭第一個數字字符不能為0.
5、八進製整常數必須以0開頭,數碼取值為0-7。八進製數通常為無符號數。
6、十六進製數常數的前綴為0x或者0x。其數直碼維阿0—9,a—f或者a—f。
二進製、八進製、十進製、十六進製之間的轉換
7、字符串常量在內存中存儲時有串尾標記‘\0 ’,所以字符常量占一個字節的內存空間,而字符串常量占的內存字節數等於字符串中字符所占的字節數加1.
8、可以把一個字符常量賦予一個字符變量,但不能把一個字符串常量賦予一個字符變量。c語言中沒有專門的字符串變量。字符串如果需要存放在變量中,需要使用字符型數組來存放。
9、++i與i++的區別:
n =++i;先加再賦值。n = i++;先賦值再加。eg:i = 1時,n =++i,n = 2,i = 2;n = i++,n = 1,i = 2。
int i = 5,j;
j =++i+i++;
printf(“%d,%d”,i,j);//7,12
j=(++i)+(++i);
printf(“%d,%d”,i,j);//9,17
10、數據類型轉換;double類型最高。
11、
int m,n,k;
m = 15,n = 20;
k =(--m)+(--n);
printf(“k =%d,m =%d,n =%d”,k,m,n);//k = 33,m = 14,n = 19
m = 15,n = 20;
k =(m--)+(n--);
printf(“k =%d,m =%d,n =%d”,k,m,n);//k = 35,m = 14,n = 19
c語言程序設計重點知識第一章c語言概述
1、c程序的組成和形式的基本特點(p6-7)
(1)c程序是由函數構成的,一個c源程序至少且僅包含一個main函數,也可以包含一個main函數和若幹個其他函數。
(2)一個函數由兩部分組成
1函數的首部:即函數的第一行,包括函數名、函數類型、函數屬性、函數參數名、參數類型
例:intmax(intx,inty)
一個函數名後麵必須跟一對圓括號,括號內寫函數的參數名及其類型。函數可以沒有參數,如main()。
2函數體:即函數首部下麵的花括號內的部分。如果一個函數內有多個花括號,則最外層的一對花括號為函數體的範圍。函數體一般包括:聲明部分、執行部分2、運行c程序的步驟及每個步驟生成文件的類型及特點(p7)
第二章算法
1、算法的定義
一個程序應包括①數據結構即對數據的描述;②算法也就是操作步驟。計算機算法可分為兩大類:數值運算算法和非數值運算算法。
2、算法的特性(p19)
1.有窮性;
2.確定性;
3.有零個或多個輸入;
4.有一個或多個輸出;
5.有效性。
3、描述算法的常用方法(p20-33)
1.自然語言;
2.用流程圖表示算法。
3.n—s圖
4.計算機語言
5.偽代碼
4、c程序算法的3種基本結構及其共同特點(p24-25)
三種基本結構:
1.順序結構:最基本;
2.選擇結構:又稱選取結構或分支結構;
3.循環結構:又稱重複結構;
1當(while)型循環;
2直到(until)型循環。
共同特點:
1.隻有一個入口;
2.隻有一個出口;
3.結構內的每一部分都有機會被執行到;
4.結構內不存在“死循環”。
5、結構化程序設計的設計原則(p34)
1.自頂向下;
2.逐步細化;
3.模塊化設計;
4.結構化編碼。
第三章數據類型、運算符與表達式
1、c語言的基本數據類型和構造數據類型(p37)
在程序中對用到所有數據都必須製定其數據類型。數據有常量和變量之分,它們分別屬於以上這些類型。
2、字麵常量和符號常量(p37-38)
在程序運行過程中,其值不能被改變的量稱為常量,常量區分為整型常量和實型常量,常量一般從其字麵形式即可判別,這種常量稱為字麵常量或者直接常量。
用一個標識符代表一個常量的符號,稱為符號常量,即以標識符形式出現的常量(常量的表示用大寫字母,變量的表示用小寫字母),符號常量與變量不同,符號常量的值在其作用域內部能改變,也不能再被賦值,如果再用賦值語句給符號常量賦值是錯誤的。使用符號常量的好處:1.含義清楚2.在需要改變一個常量時能做到“一改全改”
3、標識符的命名規則(p39-40)
c語言規定標識符隻能有字母、數字和下劃線3中字符組成,且第一個字符必須為字母或下劃線,合法的標識符可以作為變量名。編譯係統將大寫字母和小寫字母認為是兩個不同的字符。變量名的長度最好不要超過8個字符。在c語言中,要求對所有用到的變量做牆紙定義,也就是“先定義,後使用”,1.凡未被事先定義的,係統不把它認作變量名,這就能保證程序中變量名使用得正確。2.每一個變量被指定為一個確定類型,在編譯時就能為其分配響應的存儲單元。3.指定每一變量數以一個類型,這就便於在編譯時據此檢查在程序中要求對該變量進行的運算是否合法。例a%b是“求餘”得到a/b的餘數
4、整型常量的3種表示方式、整型變量的分類及其定義方式、整型常量的類型(p41-44)
整型常量即整常數的3種表示方式:
1.十進製整數;
2.八進製整數(以0開頭);
3.十六進製整數(以0x開頭)。
整型變量的分類:整型變量的基本類型符為int,根據數值的範圍將變量定義為基本整型
int、短整型shortint/short、長整型longint/long在實際應用中,變量的值常常是正的,為充分利用變量的值的範圍,可以將變量定義為“無符號/unsigned”類型,以指定是“無符號數”,或者為“有符號/signed”。如果前無符號,默認為有符號(signed)歸納起來,可以用一下六種整形變量:
1.有符號基本整型[signed]int
2.無符號基本整型unsignedint
3.有符號短整型[signed]short[int]
4.無符號短整型unsignedshort[int]
5.有符號長整型[signed]long[int]
6.無符號長整型unsignedlong[int]
整型常量的類型:
1.一個整數,如果其值在-32768~2147483647範圍內,則認為它是int型,它可以賦值給int型和longint型變量
2.一個整數,如果其值超過了上述範圍,而在-2147483648~2147483647範圍內,則認為它是長整型,可以將它複製給一個longint型變量
3.一個整常量後麵加一個字母u或u,可以認為是unsignedint型,如123456u
4.在一個整常量後麵加一個字母l或l,則認為是longint型常量,如123l、123l
5、浮點型常量的2種表示方式、浮點變量的分類及其定義方式、浮點常量的類型(p45-47)浮點型常量的2種表示方法:浮點數就是實數,有兩種形式
1.十進製小數形式。(由數字和小數點組成,必須有小數點)
2.指數形式。如123e3或123e3代表123×10.3注意字母e/e之前必須有數字,且e後麵的指數必須為整數,一個浮點數可有多種指數表示方法
浮點變量的分類:
1.單精度(float型):有效數字6~7
2.雙精度(double型):有效數字158~16
3.長雙精度型(longdouble型):有效數字18~19
浮點變量的定義方式:floatx,y;類似
浮點常量的類型:如果在數的後麵加字母f或f(如1.65f),編譯係統會把它們按單精度處理。一個浮點型常量可以賦給一個float型、double型或longdouble型變量,根據變量類型截取實型常量中相應的有效位數字。
例如:floata;
a=111111.111;
由於folat型變量隻能接受7位有效數字,因此最後兩位小數不起作用。如果a改為double型,則能全部接受上述9位數字,並儲存在變量a中。
6、字符常量的2種形式、字符變量、字符串常量(p48-52)
字符常量的2種形式:
1.c語言的字符常量是用單撇號括起來的一個字符。如‘a’
2.常用的以“\”開頭的特殊字符如下
字符變量:字符變量用來存放字符常量,它隻能放一個字符,不能存放字符串例charc1,c2;c1=‘a’;c2=‘b’;一個字符變量在內存中占一個字節。
小寫字母的ascii碼比它的大寫字母ascii碼大32,小大變為大小
7、變量初始化的時間(p53)
c語言允許在定義變量的同時使變量初始化。(inta=3;floatf=3.56;charc=‘a’)也可以使被定義的變量的一部分賦初值(inta,b,c=5;)
如果對幾個變量賦予同一個初始值,應寫成:inta=3,b=3,c=3;不能寫成inta=b=c=3;初始化不是在編譯階段完成的,而是在程序運行時執行本函數時賦初值的,相當於有一個複製語句。(inta=3;)
8、各類型數據間的混合運算(p54)
整型、浮點型、字符型數據間可以混合運算
9、c語言的運算符及其優先級和結合性(p55)
特殊%,模運算符或稱求餘運算符,%兩側均應為整型數據,且兩個整數相除的結果為整數,如5%3為1,舍去小數部分算術運算符的結合方向為自左至右或左結合性,並且先乘除後加減
10、強製類型轉換(p56)(double)a;(int)(x+y);11、自增、自減運算(p57)i++或++i
1.自增自減運算符隻能用於變量,不能用於常量或表達式。例
++(i-1)為錯
2.++和—的結合方向是自右至左,例-i++合法,先輸出-i再加一,(-i)++不合法