一.gcc的使用
1.计算机能识别的唯一语言是机器语言
语言的发展:
C语言是中级语言,具有汇编的特性,同时也具备高级语言可移植等特性。
编译器:将原来的代码(源代码)编译成计算机可执行的代码(程序)
相同的代码经过不同的编译器编译,可以被不同的设备所执行
Linux系统常用的编译C语言的编译器是:gcc
2.C语言程序编译步骤
二.hello world
(1)头文件的包含方式
#include <stdio.h> 默认是从 /usr/include/ 目录下搜索文件
#include “stdio.h” 先在当前目录下搜索文件,如果没有,再去 /usr/include 下找
#include “…/stdio.h”
(2)stdio.h
C语言的标准输入输出头文件
(3)main
1.有返回值,返回值是 int 类型,用来表示程序结束状态,如果是程序是正常结束返回 0,异常结束,返回其他值
2.C语言有且仅有一个main函数
3.程序main函数开始执行
(4){} 代码块
(5)return 表明函数结束,下面的部分都不执行
(6)printf () 是 stdio.h 文件中的一个函数,所以使用这个函数必须包含stdio.h 头文件
(7)注释
1.// 单行注释
2./**/ 多行注释
(8)编码规范
1.“{” 下面一行内容和这个“{” 要有4个空格的缩进
2.单词要有空格
3.不同的逻辑代码之间要有空行
(9)C语言语句是以分号结尾
三.内存
(1)程序:
1.没有运行的程序 就是一堆代码,存在存储设备中,比如:硬盘、U盘、手机….
2.运行起来的程序 程序会被读到内存中执行,内存中存改程序的可执行代码、数据….
(2)存储单位:
1.bit 位,比特,是一个二进制数字,只能表示 0 或者 1,使用的单位是 b
2.Byte 字节,使用的单位是 B 1B = 8b (内存的最小存储单位)
3.KB 1KB = 1024B
4.MB 1MB = 1024KB
5.GB 1GB = 1024MB
内存为每个字节分配了一个编号,类似于人的身份证===>这个编号叫做内存的地址。
内存为字节分配编号,要统一编号,这个编号的位数也是固定的
1.32位系统:编号的位数是32位,进制是二进制,0000…010101(32个) ----->4B
2.64位系统:编号位数是64位,进制是二进制,
0000…000101(64个) ------>8B
32位系统 -----> 内存编号是4字节编号 -----> 最大能有多少个字节?
范围: 0000…00000(32个0) -----> 1111….1111(32个1)
0 -----> 2^32 − 1
总共 2^32 字节 =4GB
四.数据存储
内存存的是二进制数,以一个字节为例:
(1)无符号数:只有正数,不带正负号
无符号数取值范围:
0000 0000----> 1111 1111
0 ----> 255
(2)有符号数:带正负号的数
内存取最高位为符号位
最高位:0 1
类型 :正数 负数
存:
正数:在内存中存的是数据本身
负数:先转换为二进制,对每一位取反(符号位不变),然后加1
例如:
5:实际在内存中存的值是 0000 0101
-5:1000 0101---->1111 1010(取反)---->1111 1011(+1)
实际在内存中的值是:1111 1011
0在内存中表示:0000 0000
-0在内存中表示:人为规定为-128; 也就是说1000 0000这个值表示-128
有符号数取值范围:
1000 0000----> 0111 1111
-128 ----> 127
例如:
有符号数,在一个字节范围内:
127+1
127在内存中的存储: 0111 1111
1 在内存中的存储: 0000 0001
和 : 1000 0000 =====> -128
注意:1111 1111代表:-1