c语言学习第一天

C语言32个关键字:
数据类型有关:
基本类型:void char short int long float double
复合类型:struct union enum
类型限定:unsigned signed const static volatile register extern typedef sizeof auto
流程控制有关:
分支结构:if else switch case default
循环结构:for while do
跳转结构:return goto break continue

C语言介绍:
丹尼斯.里奇和肯.汤普逊于1971~1973在贝尔实验,在开发UNIX操作系统时,以BCPL语言为基础开发的世界上第一款高级编程语言,它是为了编写操作而开发的编程语言。
优点:语法简单,只有32个关键字,运算速度快,适合实现底层的算法,控制硬件的能力强,一般应用于嵌入式开发。
缺点:由于出现的比较早,语法上有一些陷阱和缺陷,没有大型的软件公司在背后支持,可用的软件库比较少。
为什么学习C语言:是第一款高级编程语言,之后的编程语言在设计基本都参考了它,学习了C语言能快速学习其它编程语言,并且学习C语言能帮助我们理解计算机的底层逻辑、和操作系统的运行机制,为以后的学习打下坚实基础。

第一C程序:

#include 

int main(int argc,const char* argv[])
{
    printf("Hello World!\n");
    return 0;
}

1、程序员所编写的C代码不是标准的C代码,需要一段程序把它翻译成标准的C代码,负责翻译的程序叫预处理,被翻译的指令叫预处理指令,以#开头的指令都是预处理指令。
2、#include 的功能是导入一个文件,它有两种用法:
#include <> 从系统指定的路径下查找并导入一个文件
#include “” 先当前路径下查找并导入一个文件,如果没有再从系统指定的路径下查找并导入一个文件
3、C语言标准委员会为C语言提供了一些基础功能,这些功能以函数形式封闭在libc.so库文件中,同时还提供一些对函数的说明文件(头文件),常用的头文件有:stdio.h stdlib.h string.h math.h。
standard input output head file 缩写为 stdio.h
4、C语言中以main函数作为程序执行入口,有且只能有一个,无论写在任何位置它都第一个执行。
5、int是一种数据类型,写在这个位置表示main函数的返回值是整数。
6、C语言使用大括号划分代码区域,写在大括号中的代码都属于main函数。
7、printf/scanf是标准库中的函数,具有输入、输出数据的功能,使用它们需要导入stdio.h头文件,一般用于测试程序。
8、C语言中把一些不方便使用或显示的字符用一些特殊的字符(转义字符)代替:
/n 换行
/r 回到行首
/b 退格
/a 铃响
/t 制表符
%% 表示一个%
// 表示一个/
9、C语言以;作业一行代表的结束标志,过长的代码可以进行换行。
10、return 语句可以结束函数的执行,main函数的中return可以结束整个程序。
11、return 还可以返回一个数据给函数的调用者,main函数中的return可以返回一个数据给操作系统,用来告诉操作系统程序的结束状态。
正值 程序执行过程中出现异常
0 表示程序正常结构
负值 程序执行过程中出现错误
echo $? 可以查看程序的结束状态码

编译器和gcc:
什么是编译器:它是一个负责翻译的程序,它可以把人类能看懂的代码翻译成计算机能看懂的二进制指令,它由预处理器、汇编器、链接器等组成。
gcc是GNU组织为编译Linux内核代码而开发的一款C语言编译器。
以gcc为例,编译器把C代码变成可执行程序的过程:
1、把程序员所编写的C代码翻译成标准的C代码:
gcc -E hello.c 会把预处理的结果显示到屏幕上
gcc -E hello.c -o hello.i 会把预处理的结果保存到文件中,以.i结尾的叫预处理文件
2、把预处理的结果翻译成汇编代码
gcc -S hello.i 会生成.s结尾的汇编文件
3、把汇编代码翻译成二进制指令
gcc -c hello.s 会生成.o结尾的目标文件
4、把若干个目标文件合并成可执行谁的
gcc a.o b.o c.o … 默认会生成一个叫a.out的可执行文件,使用-o可以指定编译结果的名字。
注意:gcc hello.c 包含了以上四个步骤,gcc hello.c && ./a.out 编译并执行

gcc编译器常用的参数:
    -E 预处理
    -S 生成汇编文件
    -c 生成目标文件
    -o 指定输出结果的名字
    -I 指定头文件的路径
    -l 指定库名,例如:使用sqrt pow等数学函数时,需要额外链接数学库 -lm 
    -L 指定库文件的路径
    -D 在编译时定义宏
    -g 编译时添加调试信息,这样编译出的可执行文件可以使用gdb调试
    -Wall 显示所有警告
    -Werror 把警告当错误处理,编译时如果有错误则不会产生可执行文件
    -std 指定编译要遵循的语法标准,c89,c99,c11 我们当前编译默认的是c89标准
        -std=gnu99

C语言文件类型:
.h 头文件
.c 源文件
.i 预处理文件
.s 编译文件
.o 目标文件
.gch 头文件的编译结果,用不到,建议立即删除
.a 静态库文件
.so 动态库文件

C语言基本数据类型:
整型:
有符号整型:最高位二进制位用来表示正负,0代表正数,1代表负数。
signed char 1 -128~127
signed short 2 -32768~32767
signed int 4 -2148473648~2148473647
signed long 4/8
signed long long 8 -9223372036854775808~9223372036854775807
由于编程时有符号整型使用较多,所以编译器允许 signed 可以省略。
无符号整型:所有的二进制位都用来表示数据,只能表示正数。
unsigned char 1 0~255
unsigned short 2 0~65535
unsigned int 4 0~294967295
unsigned long 4/8
unsigned long long 8 0~18446744073709551615
在使用无符号类型时 unsigned 关键字不能省略,但又比较麻烦,C标准委员会为了方便我们使用无符号整型,在stdint.h头文件中对无符号整型进行的重定义。
uint8_t uint16_t uint32_t uint64_t
浮点型:小数点是浮动的,也就是带小数点的数据
单精度:float 4
双精度:double 8
高精度:long double 12/16
小数点后六位有效,在计算机中以科学计算法存储,由:符号位+底数位+指数位,由于格式特殊所以计算速度比整型要慢,所以编程时尽量使用整型数据。

模拟:
    布尔:由于先出现的C语言,后出现的布尔类型,也就是说C语言在设计时没有设计时布尔类型,然后以打补丁的方式新增了布尔类型,需要包含 stdbool.h 头文件,才能使用 bool true false。
    字符型:字符就是符号或图案,在计算机中以整数形式存储,当需要显示时根据ASCII表中的对应关系显示相应的字符或图案。
        '0' 48
        'A' 65
        'a' 97

变量:
什么是变量:就是在程序运行过程中,可以变化的量,用来存储数据的容器。
定义:
数据类型 变量名;
变量的取名规则:
1、由字母、数字、下划线组成
2、不能以数字开头
3、不能与关键字重名
4、见名知意(功能+类型+使用范围)
使用:
存储数据:变量名=1324;
参与运算:printf(“%d\n”,变量名/3*2);
变量的输出:
使用printf函数输入变量的值,需要提供变量名和变量的类型,C语言中使用占位符来告诉printf/scanf变量的类型信息。
%c
%hhd %hd %d %ld %lld
%hhu %hu %u %lu %llu
%f %lf %LF
printf(“[提示信息]占位符”,变量名);
变量的输入:
scanf(“占位符”,变量地址); &变量名可以计算出变量的地址。
注意:scanf中除了占位符什么不要加。

练习:定义各种类型的变量,使用scanf从键盘输入变量值,然后使用printf输出变量的值。

预习:
1、运算符和运算符优先级
2、隐式类型转换和强制类型转换
3、流程控制语句,分支、循环、跳转

你可能感兴趣的:(c语言,学习,开发语言)