C语言基础

2016-05-14  本文已影响96人  YKDog

第1次学习总结

Linux下的基本命令,基本数据类型,和数据以补码方式在计算机中存储。

day1总结

<a name = "1">手动编译过程</a>

手动编译过程

<a name = "1">Linux的目录和分区</a>

和之前的Windows电脑不同的是Linux打开之后没有发现类似C:/这样的盘符.这是因为Linux的分区是挂载到文件目录下的。文件目录描述的大致如下:

目录 描述
/ 根目录
/bin 做为基础系统所需要的最基础的命令就是放在这里。比如 ls、cp、mkdir 等命令;
/boot Linux 的内核及引导系统程序所需要的文件
/dev 一些必要的设备,比如声卡、磁盘等。
/ect 系统的配置文件存放地.一些服务器的配置文件也在这里;比如用户帐号及密码配置 文件;
/lib 库文件存放地。
/media 可拆卸的媒介挂载点,如 CD-ROMs、移动硬盘、U 盘,系统默认会挂载到这里来。
/mnt 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录
/opt 可选的应用程序包
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如 cpu、硬盘分 区、内存信息等)存放在这里。
/root Root用户的工作目录
/sbin 和 bin 类似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所 需要使用得到的。
/tmp 系统的临时文件,一般系统重启不会被保存。
/usr 包含了系统用户工具和程序。
/srv 该目录存放一些服务启动之后需要提取的数据

如果一个分区没有挂载在目录中就不会被系统接收和识别。Linux下磁盘的分区和目录的关系如下:

  • 任何一个分区都必须挂载到某个目录上。

挂载外设

挂载外设的步骤

  • 插入外设,输入命令fdisk -l来找到外部设备如:/dev/sdb1

<a name = "2">Linux终端常用命令</a>

ls pwd cd touch mkdir rm cp mv find cat less head tail useradd gou passwd you su ifconfig ping setup

<a name = "2">VIM教学</a>

vimtutor 中有教学每天坚持两遍就好。

使用中文版vimtutor -g zh

关于vim的配置高亮缩进等

在用户当前的家目录中,输入 vim ~/.vimrc 该文件是一个隐藏文件,如果没有则
创建它,该文件中保存一些,vim 的常用配置。

set nu            //代码显示行号
syntax on         //关键词高亮显示
set cindent       //c语法自动缩进
set autoindent    //新行自动缩进 
set shiftwidth=4  //缩进宽度4
set tabstop=4     //tab键宽度4 
set softtabstop=4 //制表符宽度4

day2总结

<a name = "2">流程图设计推荐</a>

流程图设计的网站:www.processon.com

<a name = "2">标识符的命名规则</a>

  • 只能由字母、数字、下划线、组成。
  • 不能以数字开头。
  • 不能使用关键字。
  • (记忆:如果数开头就会输(失败))

其他法则:1.驼峰法则 sumOfTwoNumber 2.下滑线 sum_of_two_number

<a name = "2">补码</a>

example1:1字节下2的原码 反码 补码是多少?

正负不变的原则

码型 表示值
原码 0000 0010
反码 0111 1101
补码 0111 1110

example2:以下代码是打印32 ~ 127的ASCII码。如果去掉unsiged就会死循环。

int main(void){
    unsigned char ch;
    for (ch = 32; ch < 128; ch++) {
        printf("%3d = %c\n", ch, ch);
    }
}

原因:当改为char时候。变为有符号数, 补码会用来表示符号。ch = 127 127(补码形式0111 1111) < 128成立 打印
ch++ ch = 128(补码形式1000 0000 原码:-1000 0000 = - 128) 这样就死循环了。比较时任是比较原码值的大小。变化的时候正负不变 符号位设置为0;补码是模的概念, 而模是一个循环。满了就会回到起点。

补码 表示值
1111 1111 -1
---- ----
1000 0001 -127
1000 0000 -128
0111 1111 127
0111 1110 126
---- ----
0000 0010 2
0000 0001 1
0000 0000 0

<a name = "3">基本数据类型</a>

难点分析:浮点数的表示方法

存储示意图

比如32位要存储0.5这个数字。

0.5 = 1 * 2 -1

同理125.5的表示
125二进制表示形式为1111101,小数部分表示为二进制为 1,则125.5二进制表示为1111101.1,由于规定尾数的整数部分恒为1,则表示为1.1111011*26,阶码为6,加上127为133,则表示为10000101,而对于尾数将整数部分1去掉,为1111011,在其后面补0使其位数达到23位,则为11110110000000000000000
则其二进制表示形式为 0 10000101 11110110000000000000000,则在内存中存放方式为:

01000010   高地址
11111011
00000000
00000000   低地址

由上分析可知float型数据最大表示范围为

  1. 1111111 11111111 11111111 x 2 127= 3.4 x 1038

难点分析:浮点数的精度是一个范围!!???

比如要表示0.1 到0.9 九个小数。精度到0.1至少需要9个开关,也就是9bit,即4个字节至少。所以4个字节的精度是3~4位。有可能精确到4位表示一些数,但是不能全部全表示所以不能全达到4位。

所以在23个尾数字节的存储情况下, 可以表示 223 种可能。
如果要达到精确到0.00 0001 大概需要99 9999种可能。223 = 838 8608 > 99 9999 所以足够精确到精确到 6 位。但是如果精确到 7 位就必须 999 9999种可能。然而开关 838 8608不够。所以精度是6~7位。

<a name = "转义字符">转义字符</a>

ASCII 0~127的范围

常见转义字符的

转义字符 意义
\n 换行
\r 回车移到本行开头
\t 水平制表,调到下一个TAB缩进处
\|\
' '
\" "
%% %

比如:

printf("I like \"football\"\n");
printf("%d%%\n", 95);

输出:
I like "football"

95%

上一篇下一篇

猜你喜欢

热点阅读