C语言是经过编译和链接生成可执行文件,进行运行的。
自己编写代码保存的文件为源文件.c
经过编译后.obj文件
后经过链接后生成.exe可执行文件
最后运行可执行文件即可
尤其要说的是现在编译和链接是通过编译器(IDE)工具执行的,可以转化为二进制
注:一个项目中有多个.c文件,但只能有一个main函数。main函数是程序的入口,有且仅有一个,程序都是从main函数的第一行开始的。
C语言库函数是把自定义函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供程序员使用
比如:printf和scanf就是库函数
保留给C语言使用,不能自己命名变量的。在C语言中有32个关键字
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static
C语言本身具有的类型,也叫内置类型
字符型 char 占1个字节
整型 short 2字节 int 4字节 long 4字节 long long 8字节
浮点型 float 4字节 double 8字节
布尔类型 _Bool
signed:表示一个类型带有正负号,包含负值
unsigned:表示该类型不带有正负号,只能表示零和正整数。若想Int类型不带负号,表示非负整数,必须用unsigned声明变量
这两个类型可以用来修饰字符型和整型
默认情况下
int == [signed] int //signed可以省略
unsigned [int] a == unsigned a; //int可以省略
unsigned 的好处是同样长度的内存能够表示的最大整数值,增加了一倍
signed short int //范围是-32768-32767
unsigned short int //范围是0-65535
如果想看其他数据类型的范围,可以去头文件limits.h,float.h等查看
//这是limits.h头文件包括的一部分范围
#define CHAR_BIT 8
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127
#define UCHAR_MAX 0xff
#define MB_LEN_MAX 5
#define SHRT_MIN (-32768)
#define SHRT_MAX 32767
#define USHRT_MAX 0xffff
%d 十进制的整数
%s 表示字符串
%c 表示字符 char
%f 表示单精度浮点数 float
%lf 表示双精度浮点数 double
%zd 打印size_t的类型使用
转义字符通俗来讲就是转变了意思的字符
\n 换行
\t 水平制表符
\a 使终端发出警告
\b 删除一格
\ddd ddd表示1-3个八进制数字 //字符的八进制表示
\xdd dd表示2个十六进制的数字 //字符的十六进制表示
sizeof是一个操作符,计算的是变量所占内存大小,也就是计算类型创建的变量所占内存的大小,单位是字节。
这里就有一个专门为sizeof设置的一个类型,本质是无符号整数,也就是sizeof_t
字符串的末尾隐藏一个\0
\0是字符串的结束标志
char arr[]="abc" //有\0 打印结果abc 内存中相当于有'a' 'b' 'c' '\0'
char arr1[]={'a','b','c'} //没有\0 打印结果abc烫烫烫bc
原因:
因为\0表示结束符,字符串最后都有个\0,当打印arr时候,内存检测到\0就停止打印
而arr1没有\0,因此内存就会往后一直打印,直到找到\0才停止,所以会产生乱码
注:计算字符串中字符的个数,使用strlen()函数,但是不计算\0。sizeof返回的是字节数
全局变量:int main前面定义的,整个工程中想使用,都是有办法使用的
局部变量:大括号内部定义的,只能在局部范围内使用
当局部变量和全局变量的变量名同名时,局部变量优先
前置++:先++,后使用
int a=5;
int b=++a;//b==6 a==6 相当于 a=a+1;b=a;
后置++:先使用,再++
int a=5;
int b=a++;//b==5 a==6 相当于 b=a;a=a+1;
最终的结果是最右边的结果
a=(c++,b++);//最终的结果是最右边的结果 a=b++;
a=c++,b++;//相当于 a=c++;a=b++;
(类型)
int a=(int)3.14; //结果为3
将3.14类型转化为int类型,这种强制类型转换只取整数部分