嵌入式开发-lesson9-顺序结构程序设计
Lesson9-順序程序設計
一、常量與變量
1、常量
在程序運行過程中,其值不能改變的量,叫做常量。
f(x) = 2x + 1
常用的常量有以下幾種類型:
1)整型常量, 100, 0, -234
2)實型常量, 123.456, 123456e-3,? 123e+3
3)字符型常量
?普通字符, ‘a’ ‘#’
?轉義字符, ‘\n’ ‘\t’ '\b'
4)字符串常量, “123”? "weijie"
5)符號常量? #define? ABC ? 3.14 ? ABC就是一個符號常量
2、變量
在運行過程中值可以改變的量,叫做變量。變量必須先定義后使用,例如:int a;定義一個整數類型的變量
標識符:在高級語言中用來對變量、符號常量、函數等等起名字的有效字符,叫做標識符。
標識符的要求:只能包含字母、數字、下劃線,并且只能以字母和下劃線開頭
int ? 2a ? 錯
int ? a#b? 錯 ??
二、進制轉換
十進制(d):
逢10進1,十進制的算法123 = 1x100 + 2x10 + 3x1,十進制中每一位都不超過10
二進制(binary):
逢2進1,二進制的算法(101)B = 1x4 + 0x2 + 1x1,二進制中每一位都不超過2
(10010011)b = 1*1+1*2+0+0+1*16+1*64
八進制(o):
逢8進1,八進制的算法(765)O = 7x64 + 6x8 + 5x1,八進制中每一位都不超過8
十六進制(hex):
逢16進1,十六進制的算法(765)H = 7x256 + 6x16 + 5x1,十六進制中每一位都不超過16
十六進制中有超過10的數該怎么表示?用字母a,b,c,d,e,f
位:一個位里面只能放一個1位的二進制數
一個字節byte等于8位,一個字等于2個字節
十進制數num轉為n進制的方法:
step1: n/(n+1) = 0....1
step2: num÷n = 商......余數1
step3: 如果商為0,跳轉finish
step4: 商 ÷n = 商......余數2
step3: 如果商為0,跳轉finish
step4: 商 ÷n = 商......余數3
step3: 如果商為0,跳轉finish
step4: 商 ÷n = 商......余數4
。。。。。。
finish:將余數1到余數n從右到左寫下來,這就是你的結果
n進制轉十進制的方法:
給一個8進制4123,那么對應的十進制是:
3x8的0次方 + 2x8的1次方 + 1x8的2次方 + 4x8的3次方
二進制的技巧
任何一個正整數都可以表示為2的N次方相加,你不信也得信。。。
10 = 8 + 2
100 = 64 + 32 + 4
1000 = 512 + 256 + 128 + 64 + 32 + 8
當然你需要熟練掌握2的10次方以內的所有結果,這是一個程序猿的要求。
789 = 512+256+16+4+1 = ? 1100010101
二進制轉十六進制:四個一組,每一組都是2的0次方到2的3次方
(1011 1100)B = (bc)H
三、基本數據類型
C語言基本數據類型:整型、浮點型
整型:基本整型、長整型、短整型、雙長整型、字符型
浮點型:單精度浮點、雙精度浮點
1、??? 整型
整型:integer
基本整型(int):占4個字節或者2個字節(分操作系統)
短整型(short int):占2個字節
長整型(long):占4個字節
雙長整型(long long):占8個字節
在實際應用中有些數據只有正數,不能為負數,因此數據又可以分為有符號數據和無符號數據,所以c語言把整型變量又仔細劃分為
unsigned int
[signed] int
unsigned short [int]
[signed] short [int]
unsigned long [int]
[signed] long [int]
unsigned long long [int]
[signed] long long [int]
1111 1111 = 255(無符號)
二進制的最高位是符號位,0代表+, 1代表-
1111 1111 = -127
定義一個整型變量:
int a; //定義變量
a = 100;//給變量賦值
也可以在定義變量的時候順便給變量賦值,這叫變量的初始化
int a=100;
int a,b;
int a=10, b=100;
2、??? 字符型
字符型(char):占1個字節
字符型也可以分為有符號和無符號:
[signed] char
unsigned char
定義一個整型變量:
char a;? //定義變量
a = ‘#';//給變量賦值
char a='$';
字符其實也是以整數的形式存在,因為計算機只認識0和1。你可以查看ASCII碼表,里面對每一個字符都進行的編碼。需要記住‘a’== 97
‘A’==65?? ‘0’== 48(不是整數0)
注意:并不是所有的字符都能被c語言識別。
3、??? 浮點型
浮點型:
單精度浮點(float):占4個字節
雙精度浮點(double):占8個字節
其實浮點型就是我們說的小數,只不過float和double的精確度不一樣
float? a=1.0;
4、??? 打印變量
打印常量
printf("hello\n");
打印變量
int a;
a = 10;
printf("num is %d", a); //num is 10
%d代表int %f代表float類型數據 %lf代表double類型數據
%ld代表long類型, %c打印char類型數據
如何打印多個變量:
int a,b,c;
a = 10;
b = 11;
c = 12;
printf("three num is %d %d %d\n", a,b,c);
?
四、運算符與表達式
1、四則運算
?+ 加法
?- 減法
?* 乘法,因為沒有×
?/ 除法,因為沒有÷
?% 取余數(取模)? 10%6 = 4
2、自增自減
int i = 10;
?++i 使用之前i的值加1 ,而且會改變i的值
?i++ 使用之后i的值加1
?--i 使用之前i的值減1
?i-- 使用之后i的值減1
3、表達式
?用c語法寫的式子就是c算術表達式,例如a+b*2-3+8/2,c算術表達式的計算方法和數學是一樣的
4、混合運算
?在實際運算的過程中,難免有不同類型的數據同時參加運算,鑒于此種情況,C語言有以下規則
?1)+-*/中有一個是float另一個是double,那么系統會將float轉為double,因此結果是double
?2)int和float或者double運算時,先將int轉為float或者double
?3)字符數據與整型計算時,先將字符轉為對應的ASCII碼,然后計算;字符與float或者double運算時,將字符的ASCII碼轉為float或者double
5、強制轉換
?c語言可以把一個數強制轉換成其他類型,例如:
?(int)a 把a強轉為int類型
?(float)b 把b強制轉換為float類型
?注意:當一個小數轉為整數的時候,只保留整數部分(不是四舍五入)
6、其他運算符
?1)賦值運算 =,將"="右邊的數值給等號左邊
?2)復合運算 += ,a+=3 ---> a=a+3
?3)比較運算 > >=
?4)條件運算 a = b>c?1:2
五、c語句
一個c程序就是由不同的c語言句子組成的,c語句可以分為5類
1、控制語句,控制程序的執行過程
? 1)if()...else... ??? 條件判斷
? 2)for()... ????????? 循環
? 3)while()... ??????? 循環
? 4)do...while()... ?? 循環
? 5)continue... ?????? 結束本次循環
? 6)break... ????????? 中止循環或者switch
? 7)switch ??????????? 分支
? 8)return ??????????? 返回
2、函數調用語句,由一個函數調用加一個分號組成
??printf(“hello”); ?
3、賦值語句,由一個復制表達式和分號組成
??a = 6;
4、空語句,由一個分號構成
??;
5、復合語句,可以用{ }把許多語句括起來,構成復合語句
{
??int a=10,b=20;
??int c=a+b;
??printf("%d\", c);
}
六、數據輸出
c語言有很多輸入輸出的語句,所謂輸入就是從外部獲取信息到cpu,輸出就是將cpu的信息給外部
1、printf
c語言最常用的輸出語句是printf,這個一個格式輸出的語句,用戶必須指定數據的格式,printf(格式控制, 輸出列表),例如
printf("sum = %d + %d", a, b);
%d就是指定數據的格式為int, a和b就是輸出列表, 有兩個%d,因此要有兩個數據
2、格式控制
1)%d
?用來輸出一個有符號的十進制整數,若是長整型用%ld,long long則使用%lld
2)%c
用來輸出一個字符,如果對應的輸出列表是一個整型,那么會轉為字符型。例如
?int a = 65;
?printf(“%c”, a); 屏幕會輸出一個字母A,因為A得ASCII碼是65
同樣的,如果使用%d的時候,對應的輸出列表是一個char,那么會將char轉為整數,例如:
?char a = ‘A’;
?printf(“%d”, a); 屏幕會輸出一個字母A,因為A得ASCII碼是65
3)%f
?輸出float類型,如果是double類型的,可以用%lf,默認6位小數。
?使用%m.nf,指定輸出的float格式m代表整數部分的位數,如果不夠則左端補空格,如果整數部分超出指定范圍,那么按實際操作,不可以影響它的大小;n指定小數部分的位數,如果不夠右邊補0,如果超出,四舍五入。
?float num=11.234;
?printf("%f", num);? ?? 11.234000
?printf("%1.5f", num);? 11.23400
?printf("%3.1f", num); _11.2
4)其他格式
%e 以指數形式輸出實數,例如:
? int num=1234;
? printf("%e", num);? ?? 1.234000e+003 ??
? int num=0.00123;
? printf("%e", num);? ?? 1.23000e-003
%x 以十六進制輸出整數
%o 以八進制輸出整數
%u 輸出無符號整數
%a 輸出地址
七、數據輸入
c語言的輸入也有很多種方法,常見的是scanf函數。scanf函數的使用方法基本和printf差不多,我們來找找不一樣的地方
scanf("a=%d,b=%d,c=%d", &a,&b,&c); 后面的列表多了個&
當然你需要在鍵盤上輸入:a=1,b=1,c=3 或者其他的
scanf要注意:
1)格式控制的后面不是一個變量,而是變量的地址
2)如果使用%c,那么空格和轉義字符都被認為是有效的字符
?scanf("%c%c%c", &a,&b,&c)
?輸入abc三個字母,中間不能有空格
3)如果是輸入數值,那么空格、tab、回車、等非法字符都被認為是數據結束,例如:
?scanf("%d%d%d", &a,&b,&c)
?輸入10 12 13,或者10,12,13都可以
字符的輸入與輸出:
對于字符的輸入和輸出,可以使用其他函數putchar、getchar
1)輸出字符
?char a='m';
?putchar(a);
2) 字符出入
?char a;
?a=getchar();
?putchar(a);總結
以上是生活随笔為你收集整理的嵌入式开发-lesson9-顺序结构程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到被猪攻击是什么意思
- 下一篇: UIImageView01