前提:本人目前双非硕,大二学习过C语言但没学懂(主要是没有坚持下去),目前准备重新学习C语言,第一阶段:跟着小甲鱼学习C语言的基础语法(在 linux系统中),一起监督加油吧!
一、linux系统下运行C语言的程序
创建一个学习目录——C
mkdir C
在C 的目录下创建目录one
mkdir one
进入one这个目录
cd one
vi编辑创建一个test.c的文件
vi test.c
此时会进入vi编辑器界面(如果vi编辑器不会使用,请看往期文章),编写以下代码
#include <stdio.h>
int main()
{
printf("Hello World\n");
return(0);
}
保存并退出,使用自带gcc编译器将test.c转换为可执行文件
gcc test.c -o test
运行test
./test
二、C语言
1.变量
我们需要将让cpu处理的数据都存放在内存中,不能随意存放。因此变量就是确定目标,并且提供存放空间
(1)变量名的命名规则(标识符的命名规则一样)
- 变量名只能由英文字母、数字、下划线组成,开头不能为数字
- 变量名区分大小写
- 不能用关键字命名
(2)数据类型(为变量指定坑的大小)
不同数据类型,存放的尺寸(内存大小)不同,合适的数据类型不会造成资源浪费
- char——字符型 注:字符型定义时注意带单引号
- int——整型
- float——单精度浮点型
- double——双精度浮点型
- _Bool——布尔类型(只有是,否)
注:整型int: 可以分为short int、int、long int、long long int
也可分为signed 和unsigned
程序中单独出现int,默认其为有符号
(3) 声明变量的语法
数据类型 变量名 eg: int a
(4)知识点
- printf是格式化输出函数,可以将不同数据类型转化为字符串的形式打印出来。
printf("我的年龄为%d\n", a);
这一行的格式化输出函数是将后面的变量或者数值(这里指的是a),按照指定的格式(这里指%d——)打印出来
格式化占位符:
- %d ——有符号的十进制整型
- %u——无符号的整型
- %c——字符型
- %f——浮点型(%.2f——指的是精确到小数点后2位、%11.9f——指的是整体长度为11位,小数点后9位)
- %1e——双精度浮点型,以指数的形式输出
- %1f——双精度浮点型,以小数的形式 输出(%.21f,保留两个小数点)
- %s——字符串
2.常量
(1)常量类型
- 整型常量:3、67
- 实型常量:3.34、2.22(有小数点)
- 普通字符常量:‘a'
- 转义字符常量 :'\t'表示一个tab键
- 字符串常量:”FIsh”(带双引号)
- 符号常量:格式:# define 标识符 常量 (注意这个预处理,末尾不加分号)
注意:1、区分符号常量与变量,二者的定义方式不同,并且默认使用全小写字母表示变量,全大写字母表示符号常量加以区分
2、字符串常量在编译时,会在字符串的最后面加一个\0的转义字符,来识别出是字符串结束位置,因此字符长度通常会加一
(2)sizeof运算符
用于获得数据类型或者表达式的长度
例如:sizeof(object)、sixeof(类型)
3.取值范围
存放数据的最大值和最小值
- 比特位:CPU只能读懂二进制,比特位是cpu能读懂的最小单位,其单位为比特位(bit)
- 字节:内存机构最小的寻址单位——字节B
- 1B=8bit
- 1个字节最大可以存放的值为255
注: 默认int是4个字节,32位,由于int默认是有符号的,因此实际有31位表示大小,第一位存放正负数(0是正数,1是负数)
4.补码
计算机使用补码的形式存放整数的值
- 正数的补码是该数的二进制形式
- 负数的补码:(1)取得该数绝对值的二进制形式(2)再将第一步的值按位取反(3)最后将(2)得到的加一