#include <stdio.h>
/* 程序员所编写的代码并不是标准的C代码,需要一段程序把他编程为标准的C代码, 负责翻译的程序叫做预处理器,翻译的过程叫做预处理, 被翻译的代码叫做预处理指令,以#开头的代码都是预处理指令。 #include 功能是把一个头文件导入到当前文件中 #include <> 从系统指定的路径下加载头文件 #include "" 先从当前路径下加载头文件,如果找不到再从系统指定的路径下加载头文件 操作系统是通过设置环境变量来指定加载头文件的路径 stdio.h 头文件:以.h结尾,里面存储的是一些辅助性的代码,绝大部分是函数的声明 源文件:以.c结尾,里面存储的是功能性的代码 C语言标准委员会为C语言以函数的形式提供了一些基础功能,这些函数就被封装到了libc.so库文件中 用很多头文件负责对库中的函数进行分类说明, stdio.h就是其中一个,常用的还有stdlib.h string.h stdio.h 负责对输入输出功能的函数进行说明 */
int main(int argc,const char* argv[])
/*main函数: C语言以函数为单位来管理代码,是管理代码的最小单位,一个函数就是一段具有某项功能的代码段 main函数是程序的执行入口,有且只有一个 int是一种数据类型,表示main函数的执行结果是一个整数 */
{ printf("Hello world!\n");
/*printf/scanf 是标准库找那个的函数,负责输入输出数据,用来调试代码 printf("---------------\n"); 转义字符: 键盘上一些按键是没有符号的,用一些特殊的字符组合来表示, 这些特殊字符组合就是转义字符,\n就是一个 \n 换行 \b 退一个字符 "\b \b" \r 回到行首 \t 制表符,用于对齐数据 \a 响铃 \\ 表示一个\ %% 表示一个% C语言以分号作为一行代码的结束,使用大括号划分代码区域 */
return 0; }
/*return 功能有两个:1、结束函数的执行。2、返回一个数据给函数的调用者 main函数是由操作系统调用,他的返回值给操作系统的,反映了程序是怎么样结束的, 通常有三种情况: 正数 出现异常 (别人的错误) 0 一切正常 负数 出现错误 (自己的错误) (可以通过 echo $? 命令查看上一个程序的返回值) */
1、预处理 : 把源文件翻译成预处理文件
gcc -E code.c 显示预处理结果 gcc -E code.c -o code.i 生成以.i为结尾的预处理文件
2、编译:把预处理编译成汇编文件
gcc -S code.s 生成.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 共享库文件
数据类型 | 类型占位符 | 字节数 | 位数 |
---|---|---|---|
(signed) char / int8_t | %hhd | 1 | -127~128 |
(signed) short / int16_t | %hd | 2 | -32768~32767 |
(signed) int / int32_t | %d | 4 | 正负20亿 |
(signed) long | %ld | 4/8 | |
(signed) long long / int64_t | %lld | 8 | 正负9开头的19位整数 |
unsigned char / uint8_t | %hhu | 1 | 0~255 |
unsigned short / uint16_t | %hu | 2 | 0~65535 |
unsigned int / uint32_t | %u | 4 | 0~40亿 |
unsigned long | %lu | 4/8 | |
unsigned long long / uint64_t | %llu | 8 | 0~以1开头的20位整数 |
数据类型 | 类型占位符 | 字节数 |
---|---|---|
float | %f | 4 |
double | %lf | 8 |
long double | %LF | 12/16 |
字符型 char :
字符其实就是符号或图案,内存中存储的是整数,
当需要显示成字符时会根据ASCII码表中对应的关系显示出相应的符号或者图案
布尔型 bool :
先有了C语言才有了bool类型,所以C语言中是不可能有真正的布尔类型
stdbool.h 头文件对布尔类型进行了模拟
bool true false
1、现实社会中的数据就是自带类别属性
2、对数据进行分类可以节约存储空间、提高运行速率
学无止境,无限进步!