c语言重要笔记(复习)

**基础理论**

1.机器语言是由0和1组成的,想让计算机运行就要用二进制数命令

语言的层次:加法 A+B  > 汇编语言 ADD AX BX >机器语言 0000 0001 1101 10000

c语言特点:代码量小 速度快 功能强 编程自由   缺点:写代码实现周期长  可移植性差 对库的依赖比较多

**关键词**

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  tyoedef   unsigned  union  void  volatile  while

**控制语句**

1.if() else 2.for() 3.while() 4.do~while() 5.continue 6.break 7.switch 8.goto 9.return

**运算符**

算数运算符:+ - */ % ++ --

关系运算符:<  <=  ==  >  >=  !=

逻辑运算符:! &&   ||

位运算符:<<   >> ~  |  ^ &

赋值运算符:= 

条件运算符 : ?:

逗号运算符: ,

指针运算符: * &

求字节数:sizeof()

强制类型转换:(类型)

分量运算符:.    ->

下标运算符: []

其他: ()

**第一个c语言程序**

```
#include<stdio.h>
//用void main方法就可以不用返回值0;return -1 代表程序执行失败
    int main(){
    printf("hello word");
    return o; 
    }
```

分析:

1.

include头文件包含<stdio.h> 用printf()就要用 stdio.h头文件

 \#include< > 与 #include ""的区别:

  < > 表示系统直接按系统指定的目录检索

 "" 表示系统先在 "" 指定的路径(没写路径代表当前路径)查找头文件,如果找不到,再按系统指定的目录检索 

2.main()函数

一个完整的c语言程序 是由一个,只能有一个main()函数(主函数)

main函数是c语言程序的入口,程序是在main开始的

3. {} 花括号、程序体、代码块

   代码块内部可以有一条或多条语句

   c每句可执行代码都要 ;分号结尾

   #开头的行都叫(预编译指令)没有分号;结尾

   所有可执行语句都在代码块里面

   4.注释

   // 行注释 说明一些代码

   /*  */ 块注释 

   5.printf函数

   是向标准输出设备输出一个字符串

   \n是回车换行

   6.return

   return代表函数执行完毕,返回return代表函数的终止

   

   **system函数**(需要多了解)

   ```
   #include <stdio.h>
   int system(const char*command);
   //在已经运行的程序执行另一个外部程序
   //外部可执行程序的名字
   ```

   举例代码

```
#include <stdio.h>
#include <stdio.h>
 int main(){
 //system("cals"); win平台
 system("ls");  //linux平台需要头文件#include <stdio.h>
 return 0;
 }
```

**c语言编译步骤:预处理 编译 汇编 链接**

## 数据类型

数据类型 :基本类型 :整形: int,shot,long

?                                          字符型:char 

?                                        浮点型:float  单精度实型 double 双精度实型

?                     构造类型:数组类型

?                                        结构类型:struct

?                                        联合类型:union

?                                        枚举类型:enum

?                    指针类型:(char *, int *, int**)

**常量**

1.变量

在程序运行的过程中,值可以改变

变量在使用前先定义,定义变量前必须有相应的数据类型

**标识符命名规则**:

标识符不能是关键字

标识符只能是字母,数字,下划线组成

第一个字符必须为字母或下划线

标识符中字母区分大小写

**例:** int a=3; 

int 是变量名   a是变量值  3是存储单元

**声明和定义区别**

声明变量不需要建立存储空间:如:extern int a;

定义变量需要建立存储空间:如 int b;

```
include <stdio.h>
int main()
{
//extern 关键字只做声明,不能做任何定义,后面还会学习,这里先了解
//声明一个变量a,a在这里没有建立存储空间
extern int a;
a = 10; //err, 没有空间,就不可以赋值
int b = 10; //定义一个变量b,b的类型为int,b赋值为10
return 0;
}
```

int b 即是声明又是定义

**进制**

 进制也就是进位制,是人们规定的一种进位方法。

 对于任何一种进制—X 进 制,就表示某一位置上的数运算时是逢 X 进一位。

 十进制是逢十进一,十六 进制是逢十六进一,二进制就是逢二进一 

**转换方法**

 十进制转化二进制的方法:用十进制数除以 2,分别取余数和商数,商数为 0 的时候,将余数倒着数就是转化后的结果 

 十进制的小数转换成二进制:小数部分和 2 相乘,取整数,不足 1 取 0,每次 相乘都是小数部分,顺序看取整后的数就是转化后的结果。  

 八进制的数和二进制数可以按位对应(八进制一位对应二进制三位) 逢8进1

 十进制转化八进制的方法: 用十进制数除以 8,分别取余数和商数,商数为 0 的时候,将余数倒着数就是 转化后的结果 

 十进制转化十六进制的方法: 用十进制数除以 16,分别取余数和商数,商数为 0 的时候,将余数倒着数就是 转化后的结果。 

  **C 语言如何表示相应进制数** 

十进制:正常数字1-9开头,如123

八进制:以0开头,如0123

十六进制:以0x开头:如:0x123

二进制:c语言中不能直接书写二进制数

```
#include <stdio.h>
int main()
{
int a = 123; //十进制方式赋值
int b = 0123; //八进制方式赋值, 以数字0开头
int c = 0xABC; //十六进制方式赋值
//如果在printf中输出一个十进制数那么用%d,八进制用%o,十六进制是%x
printf("十进制:%d\n",a );
printf("八进制:%o\n", b); //%o,为字母o,不是数字
printf("十六进制:%x\n", c);
return 0;
}
```

**原码**

最高位为符号位,0为正1为负

其他数值部分就是数值本身绝对值的二进制数

 负数的原码是在其绝对值的基础上,最高位变为 1 下面数值以 1 字节的大小描述 :

```
十进制数 原码 
+15 0000 1111
-15 1000 1111
+0 0000 0000
-0 1000 0000
```

**反码**

对于正数,反码与原码相同

对于负数,符号位不变,其他部分取反(1变0,0变1)

```
十进制数 反码 
+15 0000 1111
-15 1111 0000
+0 0000 0000
-0 1111 1111
```

**补码**

在计算机系统中,数值一律用补码来存储,主要原因是:

 统一了零的编码

 将符号位和其它位统一处理 

将减法运算转变为加法运算

两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃 。

------

对于正数,原码,反码,补码相同

对于负数,其补码为他的反码加1

补码符号位不懂,其他位要求反,最后整个数加一得到原码

```
十进制数 补码 <

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值