查看原文
其他

NDK探究之旅《二》——C语言的基本认识

2017-05-08 于亚豪 终端研发部


前言介绍

NDK探究之旅《二》—C语言的基本认识

于亚豪的博客地址

正文

如果对jni和ndk认识还不是太了解,建议先阅读上一篇博文

NDK探究之旅《一》——对jni和NDK的认识

C语言是什么

  • C语言是一门通用计算机编程语言,应用广泛。

  • C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言

如何看待C语言

  • 学好C语言,你可以很好地应付任何一种编程工具。

  • 一定要多敲代码,通过程式了解相关知识。几经反复方得正果。

  • 不要把学习C语言当成一种任务,更不要把它看成很难完成的任务。要充满自信,只要是一个智力正常的人都能学好C语言。始终保持游戏的心态,多发现其中的乐趣。当感到编程趣味无穷,那你在电脑方面将前程无量。

  • 如果一个程式一时无法弄清楚最后暂时放在一边,过一段时间你可能会从其他的程式中悟出道理。

  • C语言是一个整体,各个方面是有机联系的,要从总体上把握它,不要把它割裂成互不关联的部件。

  • 不要完全相信教材,所有结论竟实践验证最好

C程序的构成

尽管C程序的内容千变万化,但是它们的构成都是一致的,一个完整的C源程序的格式可以如下表示:

  • 编译预处理

  • 主函数()

  • 函数()

C语言的基本词法

C语言的基本词法由三部分组成:

  • 符号集

    符号集就是一门语言中允许出现的字符的集合,C语言的符号集就是ASCⅡ码表中的一些字符,在键盘上不能直接得到(比如说响铃字符)

  • 关键字

    标识符就是用以标识的符号。正如现实生活中给每一个人都取一个名字一样,C语言中的每一个对象(如函数、变量等)都必须取一个标识符以和其它对象区别开。

  • 保留字。

    关键字实际上就是一些特殊的标识符,又称保留字,这些保留字不允许用户对它重新定义。

头文件、数据说明、函数的开始和结束标志

  • 头文件:也称为包含文件或标题文件,一般放在一个C语言程序的开头,用#include″文件名″的格式,其中文件名是头文件名,一般用.h作为扩展名。

  • 数据说明:C语言中的数据分常量和变量两种。

  • 常量:有数值常量和符号常量两种。

  • 数值常量:可以分为整型常量、实型常量、浮点型常量和字符常量。

  • 符号常量:用一个标识符代表的一个常量,又称标识符形式的常量

  • 变量:其值可以改变的量,变量名习惯上用小写字母表示。

  • 标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。

  • 标识符的命名规则:C语言中标识符只能由字母、数字下划线三种字符组成,且第一个字符必须为字母或下划线。

    • C语言是大小写敏感语言,即对大小写字母认为是不同的字符。

    • C语言中标识符的长度随系统不同而字,如TURBOC中取前8个字符,8个字符后面的字符会自动取消。

C语言的基本数据类型

  • java 语言的八基本类型

    • byte 1个字节 8位

    • int 4个字节 32位

    • double 8个字节 64位

    • float 个字节 32位

    • long 8个字节 64位

    • char 2个字节 16位

    • boolean 1个字节 8位

    • char 2个字节 8位

  • C语言的基本数据类型

    注意:

    • 在C语言中,没有byte类型。 0假, 非0真

    • 在c语言中,没有byte类型,可以用char表示byte

    • char 1个byte 8位 和java不同

    • long 4个byte 32位 和java不同

    • int 4个byte 32位 和java相同

    • double 8个byte 和java相同

    • float 4个字节 和java相同

    • short 2个byte 32位

    • signed

    • unsigned

    • void

eg: %d表示的是一个int数据类型。%只是一种格式 &是取地址,&i表示为取内存中i的地址

修饰符的作用

  • unsigned 无符号---》长度为 0~2的32次方 - 1

  • unsigned 有符号的---》长度为-2的32次方~2的31次方-1

输出类型函数: %d---> int

格式字符意义
d%以十进制形式输出带符号整数(正数不输出符号)-->int
o以八进制形式输出无符号整数(不输出前缀0)
x,X以十六进制形式输出无符号整数(不输出前缀Ox)--->int 或者是 long int short int
u以十进制形式输出无符号整数
f以小数形式输出单、双精度实数
e,E以指数形式输出单、双精度实数
g,G以%f或%e中较短的输出宽度输出单、双精度实数
c输出单个字符
s输出字符串
ldlong int
hd短整形 half
lf输出 double

C语言常用转义字符表

ASCII码表完整版

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

0

NUT

32

(space)

64

@

96

1

SOH

33

65

A

97

a

2

STX

34

66

B

98

b

3

ETX

35

#

67

C

99

c

4

EOT

36

$

68

D

100

d

5

ENQ

37

%

69

E

101

e

6

ACK

38

&

70

F

102

f

7

BEL

39

,

71

G

103

g

8

BS

40

(

72

H

104

h

9

HT

41

)

73

I

105

i

10

LF

42

*

74

J

106

j

11

VT

43

+

75

K

107

k

12

FF

44

,

76

L

108

l

13

CR

45

-

77

M

109

m

14

SO

46

.

78

N

110

n

15

SI

47

/

79

O

111

o

16

DLE

48

0

80

P

112

p

17

DCI

49

1

81

Q

113

q

18

DC2

50

2

82

R

114

r

19

DC3

51

3

83

X

115

s

20

DC4

52

4

84

T

116

t

21

NAK

53

5

85

U

117

u

22

SYN

54

6

86

V

118

v

23

TB

55

7

87

W

119

w

24

CAN

56

8

88

X

120

x

25

EM

57

9

89

Y

121

y

26

SUB

58

:

90

Z

122

z

27

ESC

59

;

91

[

123

{

28

FS

60

<

92

/

124

|

29

GS

61

=

93

]

125

}

30

RS

62

>

94

^

126

~

31

US

63

?

95

127

DEL



(该表来自http://blog.csdn.net/abc5382334/article/details/13997005)

C语言常用转义字符表


转义字符

含义

ASCII码(16/10进制)

o

空字符(NULL)

00H/0

n

换行符(LF)

0AH/10

r

回车符(CR)

0DH/13

t

水平制表符(HT)

09H/9

v

垂直制表(VT)

0B/11

a

响铃(BEL)

07/7

b

退格符(BS)

08H/8

f

换页符(FF)

0CH/12

单引号

27H/39

双引号

22H/34

反斜杠

5CH/92

?

问号字符

3F/63

ddd

任意字符

三位八进制

xhh

任意字符

二位十六进制

(该表来自http://blog.csdn.net/abc5382334/article/details/13997005)

  • 字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都必须使用转义字符表示,即在这些字符前加上反斜杠。

  • 在C程序中使用转义字符 d d d或者 x h h可以方便灵活地表示任意字符。

  • d d d为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制A S C I I码值。

  • x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制A S C I I码值。

使用转义字符时需要注意以下问题:

  • 转义字符中只能使用小写字母,每个转义字符只能看作一个字符。

  • v垂直制表和f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。

  • 在C程序中,使用不可打印字符时,通常用转义字符表示

注:

  • 'v'垂直制表和f换页符对屏幕没有任何影响,但会影响打印机执行响应操作。

  • n其实应该叫回车换行。换行只是换一行,不改变光标的横坐标;回车只是回到行首,不改变光标的纵坐标。

  • t光标向前移动四格或八格,可以在编译器里设置

  • '在字符里(即单引号里)使用。在字符串里(即双引号里)不需要,只要用'即可。

  • ?其实不必要。只要用?就可以了(在windows VC6和tc2中验证)。

简单的踩坑:

cpp `system' undeclared (first use this function)

解决办法: 

注意 打印的时候,什么样的数据,需要用什么样的占位符,否则数据打印出错

NDK探究之旅《一》——对jni和NDK的认识

博客地址:



让心,在阳光下学会舞蹈

让灵魂,在痛苦中学会微笑

—终端研发部—



如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809   

微信公众号:终端研发部

(欢迎关注学习和交流)





            

Hello,伙伴们

长按二维码就可以关注我们啦



(欢迎关注学习和交流)




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存