标准C语言的简单介绍(编译、数据类型)

一、第一个C程序

#include <stdio.h>
int main()
{
    printf("Hello world!\n");
     return 0;
}

#include<>

程序员所编写的代码并不是标准的C代码,需要一段程序把它翻译成标准的C代码,负责翻译的程序叫做 预处理器,翻译的过程叫做 预处理,被翻译的代码叫做 预处理指令,以#开头的代码都是预处理指令
 #include 的功能是把一个头文件导入到当前文件中
 #include <> 从系统指定的路径下加载头文件
 #include “” 先从当前路径下加载头文件,如果找不到,再从系统指定的路径下加载头文件的路径

 头文件:以.h结尾,里面存储的是一些辅助性的代码,绝大部分是函数的声明
 源文件:以.c结尾,里面存储的是功能性的代码
 C语言标准委员会为C语言以函数的形式提供了一些基础功能,这些函数就被封装到了libc.so库文件中
 用很多头文件负责对库中的函数进行分类说明,stdio.h就是其中的一个,常用的还有stdlib.h string.h
 stdio.h 负责对输入输出功能的函数进行说明

main函数

C语言以函数为单位来管理代码,是管理代码的最小单位,一个函数就是一段具有某项功能的代码段。

main函数是程序的执行入口,有且只有一个

int 是一种数据类型,它表示main函数的执行结果是一个整数

return 功能有两个:1、结束函数的执行 2、返回一个数据给函数的调用者

main函数是由操作系统调用的它的返回值给操作系统的,反映了程序是怎么样结束的,通常有三种情况:

​  正数 出现异常 (别人的错误)

​  0 一起正常

​  负数 出现错误 (自己的错误)

可以通过 echo &? 命令来查看上一个程序的返回值

printf/scanf 是标准库中的函数,负责输入、输出数据,用来调试代码

printf("-------------\n");

转义字符:

​  键盘上一些按键是没有符号的,用一些特殊的字符组合来表示,这些特殊的字符组合就是转义字符,\n就是其中一个

 ​ \n 换行

 ​ \b 光标退一个字符

​  \r 光标回到行首

​  \t 制表符,用于对齐数据

​  \a 铃响

​  \\ 表示一个\

 ​ %% 表示一个%

C语言以分号作为一行代码的结束,使用大括号划分代码区域

二、编译器

​  负责把人能看得到的记录了代码的文本文件,翻译成计算机能看懂的二进制文件,有预处理器、编译器、连接器

​  gcc是由GNU组织为了编译Linux内核代码而开发的一款免费、开源的编译器,默认采用C89标准, -std=gnu99可以设置语法标准

 ​ 常用的参数:

-E	显示预处理的结果
-S	生成汇编代码
-c	只编译不链接
-o	设置编译结果的名字(-o后可加空格可不加)
-I	指定头文件的加载路径
-S	生成汇编代码
-l	指定要用的库文件 -lm
-Wall	以更严格的标准来检查代码,尽可能多地显示警告
-Werror 把警告当错误处理

三、C代码变成可执行程序的过程

​ 1、预处理 把源文件翻译成预处理文件

​   gcc -E code.c 显示预处理结果

​   gcc -E code.c -o code.i 生成以.i结尾的预处理文件

​ 2、编译 把预处理文件翻译成汇编文件

​   gcc -S code.i 生成以.s结尾的汇编文件

​ 3、汇编 把汇编文件翻译成二进制的目标文件

​   gcc -c code.s 生成以.o结尾的目标文件

​ 4、链接 把若干个目标文件合并成一个可执行文件

​   gcc A.o B.o C.o … 默认生成一个a.out的可执行文件

C语言的文件类型:

​  .h 头文件

​  .h.gch 头文件的编译结果,它会被优先使用

​  .c 源文件

​  .i 预处理文件

​  .s 汇编文件

 ​ .o 目标文件

 ​ .a 静态库文件

​  .so 共享库文件

四、数据类型

​  为什么要对数据进行分类:

​   1、现实社会中的数据就是自带类别属性

​   2、对数据进行分类可以节约存储空间、提高运行效率

​  存储空间的单位:

 ​ Bit 比特 一个二进制位,只能存储0或者1,计算机存储数据的最小单位

​  Byte 字节 八个二进制位,计算机存储数据的基本单位

 ​ Kb 1024字节

​  Mb 1024Kb

​  Gb 1024Mb

​  Tb 1024Gb

​  Pb 1024Tb

 ​ c语言中数据分为两大类:自建(程序员自己设计的:结构、联合、类)和内建(c语言自带的)

 ​ 注意:可以使用sizeof运算符计算类型的字节数

 ​ 整型:

  ​ 有符号 signed

   ​signed char    1  -128~127

​   signed short    2 -32768~32767

​   signed int     4   正负20亿左右

   ​signed long    4/8

​   signed long long  8  正负9开头19位整数

​   注意:signed 不加就代表加

​  无符号 unsigned

​   unsigned char      1   0~255

​   unsigned short     2   0~65535

​   unsigned int      4   0~40亿

​   unsigned long      4/8

​   unsigned long long  8   0~以1开头的20位整数

​   注意:由于定义无符号数据时比较麻烦,标准库把这些无符号的类型重新定义成了以下类型:

​     使用时需要包含头文件:stdint.h

​    uint8_t uint16_t uint32_t uint64_t

​     int8_t int16_t int32_t int64_t

 浮点型:

  float    4

  double   8

  long double  12/16

​   注意:采用科学计算方法,二进制与真实数据时间需要进行换算,因此浮点型数据耗时要比整型数据多得多,编程时尽量选择整型

​   小数点后六位有效

​   time ./a.out 计算程序运行时间

 ​ 模拟型:

​    字符型char

​    字符其实就是符号或图案,内存中存储的是整数,

​  当需要显示成字符时会根据ASCII码表中对应的关系显示出相应的符号或图案

​ ‘\0’ 0

​ ‘0’ 48

​ ‘A’ 65

​ ‘a’ 97

 ​ 布尔型bool

​   先有了C语言之后才有了bool类型,所以C语言中是不可能有真正的布尔类型,stdbool.h头文件对布尔类型进行了模拟

​    bool true false

五、变量与常量

 ​ 什么是变量:程序在运行期间数据可以变化的叫做变量,相当于存储数据的盒子

 ​ 定义:

  ​ 类型 变量名;

  ​ 取名规则:

  ​ 1、由字母、数字、下划线组成

​   2、不能以数字开头

​   3、不能与32个关键字重名

​    4、见名知意(功能、类型、范围…)(不强求,最好符合)

  ​ printf scanf bool …这类不是关键字,在没被使用时是可行的(作为变量名是合法的),函数使用了会报错。

​  使用:

​    赋值: num=100;

​    参与运算:num*10;

​  注意:在C语言中变量的默认值是随机的,为了安全起见要进行初始化,一般初始化为0

​   变量的输入、输出:

​    int printf(const char *format, …);

​    功能:输出数据

​    format:“双引号包含的格式信息(提示信息+占位符)”

​    … :变量列表

​    返回值:输出字符的个数

​  类型占位符:C语言通过类型占位符的方式传递变量的类型

​  %hhd %hd %d %ld %lld 有符号

 ​ %hhu %hy %u %lu %llu 无符号

​  %f %lf %LF

​  %c %s

 ​ int scanf(const char *format, …);

 ​ 功能:输入数据

​  format:“双引号包含的格式信息(占位符)”

​  … :变量地址列表 &变量名

​  返回值:成功输入的变量个数

​  注意:scanf需要的是变量类型、变量地址

​   变量地址 = &变量名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值