一,进制转换

 

其他进制转换到二进制:

10->2:除二取余 逆取法!小数部分乘积(2)取整,顺写法!

16->2: 一位转四位 0x放在首位,表示16进制,0x2F;

8->2: 一位变三位! 0放在首位,表示16进制 ,03;

 

二进制转换到其他进制:

2->8:三位合一法,从右到左,高位 不够三位则补零!

2->16:类上;

2->10:位权展开求和法;

八进制,十六进制转化为十进制:位权展开求和法。整体顺序、小数点不变,个位乘8的0次方+十位乘8的1次方...=十进制得数,即可。小数部分从左到右乘8的负一次方开始,以此类推。

十进制转化为十六进制,八进制:

整体顺序、小数点不变,整数部分除8取余数,倒取法;小数部分乘8,取整数,顺取法。

 

二,简单c语法

 

【1】c库

在实际的程序设计中,经常需要使用到一些基本功能,例如输入输出,各种常用计算等。但是这些功能对于一般程序员来说难以自行开发,却要经常用到,因此编译系统通常将这些功能预先编制好,以程序库的形式提供给程序员使用

标准C库里提供了很多的函数,只要在程序里包含了C库中对应的头文件(函数声明),就可以使用这些库函数了。

 

【2】gcc编译器

gcc(GNU CCompiler)是GNU推出的功能强大,性能优越的多平台编译器,gcc编译器能将C,C++语言源程序编译连接成可执行文件

gcc编译的四个过程:

 

1--- 预处理:主要进行宏替换以及头文件的包含展开

 

gcc -E HelloWorld.c -o HelloWorld.i

 

2--- 编译:编译生成汇编文件,会检查语法是否有错误

 

gcc -S HelloWorld.i -o HelloWorld.s

 

3--- 汇编:将汇编文件编译生成目标文件(二进制文件)

gcc -c HelloWorld.s -o HelloWorld.o

 

4--- 链接:链接库函数,生成可执行文件

 

gcc HelloWorld.o -o HelloWorld

-o 指定生成的可执行文件名字

 

【3】计算机数据表示

送入计算机的数字,字母,符号等信息必须转换成0、1组合的数据形式才能被计算机接收、存储并进行运算。

能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据

 

1---数值数据

 

二进制 101111

十进制 47

八进制 057

十六进制 0x2f

 

 

2---非数值数据

 

计算机中数据的概念是广义的,机内除有前面提到的数值数据之外,还有文字、符号、图像、语言和逻辑信息等等,因为它们也都是以0、1形式存在,所以成为非数值数据

字符数据主要指数字、字母、通用符号、控制符号等等,在机器内都被变换成计算机能够识别的二进制编码形式

国际上被普遍采用的一种编码是美国国家信息交换标准代码,简称为ASCII

 

 

第一部分由 00H 到 1FH 共 32 个,一般用来通讯或作为控制之用,有些字符可显示于屏幕,有些则无法显示在屏幕上,但能看到其效果(例如换行字符、归位字符)。

第二部分是由 20H 到 7FH 共 96 个,这 96 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。

第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM 制定的,并非标准的 ASCII 码。这些字符是用来表示框线、音标和其它欧洲非英语系的字母。

 

记住: '\0' => 0

'\n' => 10

' ' => 32

'0' => 48

'A' => 65

'a' => 97

 

【4】词法符号

 

1---关键字

关键字是由系统预定义的词法符号,有特定的含义,不允许用户重新定义

auto break case char const

continue default do double else

enum extern float for goto

if int long register return

short signed sizeof static struct

switch typedef union unsighed void

volatile while

 

2---标识符

标识符是由程序员按照命名规则自行定义的词法符号,用于定义宏名、变量名、函数名和自定义类型名等

C语言的命名规则如下:

1) 标识符由一个或多个字母、数字或下划线组成

2)标识符的第一个字符必须是字母或下划线

3)标识符不能与任何关键字相同

大小写敏感; ab Ab aB AB

 

 

3---标点符号

C语言中的标点符号有逗号、分号、冒号、花括号、圆括

号。标点符号的作用与分隔符相似,但用法非常严格,有

着明确的语法规定。

有些标点符号出现在表达式中时,当

作运算符使用

 

 

4---分隔符

 

分隔符是用来分隔其他的词法符号

 

主要包括:

空格符、换行符号、注释、制表符

 

 

5---运算符

表示运算的词法符号

主要

包括:

算术运算符、 逻辑运算符、关系运算符、位运算符、

赋值运算符、 递增递减运算符、地址运算符、

逗号运算符、sizeof运算符…

 

 

【5】基本数据类型

 

1---逻辑类型。只有两个量true和false,表示逻辑真值和逻辑假值。

 

2---整数类型。C支持四种整数类型:char, short, int和long,整数类型用于处理整数。

1)char类型,又称为字符类型,主要是用来存储字符型数据,但是因为ascii码表,字符与数字是对应关系

在内存空间占一个字节,即8个二进制为

 

分为有符号char类型和无符号char类型

 

signed char(可以存储负数):二进制形式的最高位为符号位,1表示负数,0表示正数

 

0000 0000 =》 0

1111 1111 =》 -127

0111 1111 =》 127

1000 0000 =》 -128

表示范围:-128 - +127

 

 

unsigned char(只可以存储正数)

 

0000 0000 =》 0

1111 1111 =》 255

表示范围:0-255

 

 

=============================================================================

数据的存储:计算机存储的是补码

比如说5:正数源码反码补码都一样

0000 0101 源码

0000 0101 反码

0000 0101 补码(计算机存储)

比如说-5:负数的补码是反码+1,反码是源码除符号位外其他位全部取反

1000 0101 源码

1111 1010 反码

1111 1011 补码(计算机存储)

 

=============================================================================

 

2)short类型,占据2个字节的空间,即16个二进制位

对应的printf中的格式是 %hd;

拓展:unsigned int 以及unsigned long 等在printf的格式控制为: %u;

 

unsigned short

0000 0000 0000 0000 ==> 0

1111 1111 1111 1111 ==> 65535

 

表示范围:0 - 65535

 

signed short

1111 1111 1111 1111 ==> -32767

0000 0000 0000 0000 ==> 0

0111 1111 1111 1111 ==> +32767

1000 0000 0000 0000 ==> -32768

表示范围:-32768 - +32767

 

 

3)int类型,占据4个字节的空间,即32个二进制位

unsigned int

0000 0000 0000 0000 0000 0000 0000 0000 => 0

1111 1111 1111 1111 1111 1111 1111 1111 => 4294967295

表示范围:0 - 4294967295

 

signed int

0000 0000 0000 0000 0000 0000 0000 0000 => 0

1111 1111 1111 1111 1111 1111 1111 1111 => -2147483647

0111 1111 1111 1111 1111 1111 1111 1111 => +2147483647

1000 0000 0000 0000 0000 0000 0000 0000 => -2147483648

表示范围:-2147483648 - +2147483647

 

4)long类型,32位占据4个字节

 

5)long long类型,占据8个字节

 

 

3---浮点类型。C支持两种浮点类型:float和double,浮点类型用于处理包含小数部分的数值。

float称为单精度类型,占据4个字节,一般能够精确到小数点后面6位

double称为双精度类型,占据8个字节,一般能够精确到小数点后面15位

 

4---void类型。该类型也叫缺省型,用于描述值为空集, 主要用于说明不返回值的函数或指向任一类型的指针等

 

 

【6】常量

常量是指在程序运行期间其数值不发生变化的数据。

 

1---整型常量

整型常量通常简称为整数。

C语言的整数可以是十进制数、八进制数和十六进制数

 

2---浮点常量

浮点常量又称为实数,一般含有小数部分。

1)一般形式

3.14 5.67

2)指数形式

指数形式的实数一般是由尾数部分、字母e或E和指数部分组成。

1.176*10^10 ==> 1.176e+10

-5.7473*10^-8 ==> -5.7473e-8

 

3---字符常量

所谓字符常量是指一个单一字符, 其表示形式是由两个单引号包括的一个字符

例如,

‘A’, ‘a’, ‘Q’, ‘0’, ‘9’, ‘+’, ‘:’, ‘?’, ‘$’ 都是字符常量

在C语言中, 字符常量具有数值。字符常量的值就是该字符的ASCII码值。

因此,可以这样说字符常量实际上是一字节的正整数

 

4---字符串常量

所谓字符串常量是指用双引号括起来的一串字符来表示的数据。

下面给出几个字符串常量的例子:

"Hello!", "StudentS", "9", “LINUX", "李四"

“北京海淀成府路***号", "姓名:", “****@163.com"

 

5---标识常量

所谓标识常量是指用标识符代替常量使用的一种常量, 其名称通常是一个标识符

标识常量也叫符号常量,为了不与一般变量的名称相混淆,标识常量的名称一般使用大写英文字母的标识符。标识常量在使用之前必须预先定义

标识常量的一般说明形式为:

#define <标识常量名称> <常量>

 

标识常量仅仅是简单的替换,不要做任何运算

练习:一个水分子的质量约为3.0*10-23g,1夸脱水大约有950g,编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含说少水分子。

 

 

【7】变量

1---变量的概念

 

用来记录数据,在程序运行期间,变量的值可以更改

C语言的变量在程序中用变量名表示。变量名由用户根据其用途任意命名,变量名命名遵从标识符的起名规则(只能由字母\数字\下划线组成且头一个字母只能是字母或下划线. 变量不能是C的特殊字符)。

 

在程序运行时,变量占据一定大小的存储空间,其大小由其数据类型来决定的,作为某变量的内存空间的首地址,称为变量的地址。

 

 

2---变量的说明形式

变量说明的一般形式是:

<存储类型> <数据类型 > <变量名> ;

<存储类型>可以是关键词auto、register、static和extern之一

<数据类型>可以是前面讲的基本数据类型,也可以是后面要讲解的自定义的数据类型.

<变量名>是一个合法的标识符,其前面的32字符有效

注意:在上面变量说明的式子里,<变量名>之后有一个分号“;”意味着它是一个语句,该语句我们通常称为变量的说明语句

 

变量的初始化是指变量在被说明的同时赋给一个初值

 

 

3---变量的存储类型

1)auto

用auto存储类型说明的变量都是局部于某个程序范围内的,只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。

C语言中,在函数体的某程序段内说明auto存储类型的变量时可以省略关键字auto。

 

2)register

 

register称为寄存器型,使用register关键词说明的变量主要目的是想将所说明的变量放入CPU的寄存器存储空间中,这样可以加快程序的运行速度。

如申请不到就使用一般内存,同auto ;

 

3)extern:

适用情况:引用外部文件的全局变量;

全局变量 作用域:整个源程序;

注意(名字必须相同):在本文件函数中,引用外部文件函数体外的变量(此变量是全局变量),需注意:本函数中Extern 声明的变量的名字必须和要引用的变量名字 完全相同 !!

 

4)static ---静态局部变量修饰符

1.只允许被初始化一次(初始化和 赋值不一样!),函数结束不释放,程序结束才释放;

2.存储在静态存储区,有默认初始化值(0);

3.依然是个局部变量,只能在被定义的函数体内被使用,不能被函数外所引用;

4.初始化和 赋值不一样!初始化只能一次,赋值可以多次;

 

扩展:static可以修饰全局变量,但是被修饰后的全局变量 不能被 源程序的 其他文件所引用,只能在本文件中 被使用!