linuxc(4)

gcc的使用
1、计算机能识别的唯一语言是机器语言
语言的发展:

机器语言二进制数据,11010101
汇编语言用 符号 表示一组操作 add call mov 直接操作硬件速度快
高级语言以 语句 为单位进行操作 ===> 可移植

C语言是中级语言,具体汇编的特性,同时也具备高级语言可移植等特性。 不管什么语言,要想被计算机执行,必须转换成机器码
编译器:将原来的代码(源代码)编译成计算可执行的代码(程序)
相同的代码经过不同的编译器编译,可以被不同的设备所执行
Linux系统常用的编译C语言的编译器是:gcc
2、C语言程序编译步骤

预处理(预编译)处理 “#” 开头的内容,进行替换、去掉注释。。。。s生成预处理文件,后缀名是.i
编译编译器对代码进行编译 ----> 最复杂、耗时最长的过程生成汇编文件,后缀名.s
汇编把汇编文件编译二进制目标文件生成目标文件,后缀名是.o
链接把多个目标文件按照一定规则整合成一个可以执行的程序生成的是最终的可以运行的程序

3、gcc的命令

gcc -E对文件进行预处理,生成预处理文件
gcc -S对文件进行编译,生成汇编文件
gcc -c对文件进行汇编,生成目标文件
gcc -o给生成的文件重新命名

gcc 默认生成的文件 文件名是 a.out
如果想自定义生成的文件名,编译的时候加-o 后面加名字
在这里插入图片描述
4、程序执行
linux下执行程序,直接在终端敲文件名(带上路径,相对路径或者绝对路径)

./a.out
./ 不是命令,是相对路径的写法,代表当前目录绝对路径写法

hello world
在这里插入图片描述
1、头文件的包含方式

#include <stdio.h>默认是从 /usr/include/ 目录下搜索文件
#include “stdio.h” 和 #include “…/stdio.h”先在当前目录下搜索文件,如果没有,再去 /usr/include 下找

2、stdio.h
C语言的标准输入输出头文件
3、main
1、有返回值,返回值是int 类型,用来表示程序结束状态,如果是程序是正常结束 返回 0,异常结束,返回其他值
2、c语言有且仅有一个main函数
3、程序main函数开始执行
4、{} 代码块
5、return 表明函数结束,下面的部分都不执行
6、printf () 是 stdio.h 文件中的一个函数,所以使用这个函数必须包含stdio.h 头文件
7、注释

//单行注释
/**/多行注释

8、多行注释
1、“{” 下面一行内容和这个“{”要有4个空格的缩进
2、单词要有空格
3、不同的逻辑代码之间要有空行
9、C语言语句是以分号结尾

内存
程序:

没有运行的程序就是一堆代码,存在存储设备中,比如:硬盘、U盘、手机….
运行起来的程序程序会被读到内存中执行,内存中存改程序的可执行代码、数据….

存储单位:

bit位,比特,是一个二进制数字,只能表示0 或者 1,使用的单位是 b
Byte字节,使用的单位是 B 1B = 8b ====> 是内存的最小存储单位
KB1KB = 1024B
MB1MB = 1024KB
GB1GB = 1024MB

内存最小的存储单位是字节,如何管理?
内存为每个字节分配了一个编号,类似于人的身份证号===> 这个编号叫做内存的地址
编号? ===> 是一个数字 ====> 是否有范围??
在这里插入图片描述
身份证号是多少位? 18位,位数是固定的
内存为字节分配编号,要统一编号,这个编号的位数也是固定的

32位系统编号的位数是32位 进制是二进制 000001…… 10101010(32个) ==> 4B
64位系统编号的位数是64位 进制是二进制 000001…… 10101010(64个) ==> 8B

32位系统 ===> 内存编号是4字节编号 ==> 最大能有多少个字节?
范围: 0000…00000(32个0) -----> 1111….1111(32个1)
0----->2的32次方-1
总共2的32次方字节
4GB
数据存储
内存存的是二进制数据,以1个字节为例:
1、无符号数:只有正数,不带正负号
范围: 0000 0000 -----> 1111 1111
0 -------> 255
2、有符号数:带正负号的数
内存取最高位为符号位

最高位类型
0正数
1负数

存:
正数在内存中的存的数据本身
负数:先转换成二进制,对每一位取反(符号位不变),然后加1
比如:
5: 实际在内存中存的值是 0000 0101
-5: 1000 0101(-5)===> 1111 1010(取反) ===> 1111 1011(+1)
实际在内存中存的值是1111 1011
0在内存中表示 :0000 0000
-0在内存中表示:人为规定-0 就是 -128
就是说 1000 0000 这个值表示 -128
有符号数取值范围:1000 0000 ---- 01111 1111
-128 ---- 127

有符号数,在一个字节范围内:
127+1
127在内存中的存储:0111 1111
1 在内存中的存储:0000 0001
和 : 1000 0000 =====> -128
1111 1111 代表  -1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值