目录
一、注释
注释:用于注明解释一行或一段代码作用的一种方法
为什么要注释?首先,代码一方面是给自己看的,对于一个工程量庞大的程序来讲,注释可以让自己更清晰的理解并记忆代码的意义,或者之后自己回顾代码时,注释可以快速帮助你回忆起来;其次,代码在另一方面上也需要给其他人看,一个好的程序一定有必要的注释,帮助他人快速理解你的想法,有助于与他人专业知识及编程思路的交流。
在C语言中,博主星客用到的有两种注释方式:
单行注释
第一种,单行注释,也是最常用的一种注释方式,用于解释代码语句的作用,思路。
段落注释
第二种,段落注释,也很常用,经常用于注释代码段,使不必要的代码不参与编译。
这只是博主的使用习惯,大家可以根据自己情况选择合适的注释方式和用途。注释也没有很多要说的了,就先到这里咯。
二、关键字
C语言标准定义的32个关键字可以分为如下四类:
1.数据类型关键字
其中对于前期初学者常用char double float int 做练习使用,后面也会经常用到struct,而void顾名思义是空类型,多用于定义和声明函数时使用。其次数据类型常常与其所占字节数所挂钩。最有争议的是int 类型,但有一点功底的人都知道它的大小是跟机器有关的,感兴趣的可以查看其它文章。如果你想知道自己的机器的int 类型占几个字节的话,可以使用sizeof运算符查看。
# include <stdio.h>
void main()
{
printf("char类型变量大小为%d字节\n",sizeof(char));
printf("short类型变量大小为%d字节\n",sizeof(short));
printf("int类型变量大小为%d字节\n",sizeof(int));
printf("long类型变量大小为%d字节\n",sizeof(long));
printf("float类型变量大小为%d字节\n",sizeof(float));
printf("double类型变量大小为%d字节\n",sizeof(double));
}
博主的运行结果是:
2.控制语句关键字
①循环语句
②条件语句
PS:goto一般不建议使用,因为它会使程序混乱,逻辑不够清晰,简短的程序可以用一下玩一玩。而if else常搭配使用,当然if也可以单独使用,这就是典型的单分支语句,后面再讲,今天主打一个了解认识,后面忘了也可以再过来看看。使用时特别要注意悬空else问题,有兴趣可以看看别的文章,上网查一查。
③开关语句
PS:switch、case组合语句可以看作为if、else语句的加强版。后者适用于二分支或嵌套较少的分支,前者则在面对多分支情况时有更高的效率。而且最主要的区别是switch语句的判断条件限制大,没有if else用起来灵活,但在一些情况下是非常好用的,这个我们后面讲条件分支语句的时候再说。
④返回语句
PS:return用于终止一个函数,并返回其后面跟着的值。
3.存储类型关键字
PS:这里博主要告诉大家static有许多相关的知识点哦,以后学习要重点掌握。extern也有了解的必要。register和auto仅供了解即可(也可能是博主也是刚刚学习的缘故,还没有应用的地方,相信后面学C++的时候一定可以了解的更为清晰)
4.其他类型关键字
PS:其中sizeof其实是一个运算符,上面我们也用了,千万不要当成函数哦,概念要分清。const作用是将一个变量当作常量对待,被const修饰的变量的值不能被改变。typedef的作用是起别名,后面讲结构体的时候用起来会非常舒服。
最后,博主给大家把32个关键字放在这里,想了解的可以参考其他文献深入学习。
三、数据类型
上面我们讲关键字的时候也对数据类型有了一定的认识。
int:存储整型变量,存储数据范围略过;
float:存储单精度浮点型变量,存储数据范围略过;
double:存储双精度浮点型变量,存储数据范围略过;
char:存储字符型变量,存储范围略过;
short:短整型;long:长整型;(特殊情况下会有long long);
struct:构造结构体类型,可以由上面的基本类型或指针类型或综合使用,构建出一个新的数据类型, 一般情况下,结构体所占内存大小是其成员所占内存之和。但空结构体的内存大小在不同编译器里有0有1,读者可以试一试。。另外typedef 可以为数据类型的关键字起别名。例如:
#include <stdio.h>
int main()
{
typedef int myINT;
myINT a=10; //等价于int a=10;
return 0;
}
signed 和 unsigned用于修饰整数类型,signed一般省略不写,而被unsigned修饰后,数据的无法存储负数,但正数范围上限会被扩大一倍。另外,char共有三种不同的类型:char、signed char、unsigned char。char类型是真正的字符类型,用来声明字符;而signed char和unsigned char是用来声明数值的。因此不要将三者混用。
C语言全部占位符
%a:十六进制浮点数,字母输出为小写。
%A:十六进制浮点数,字母输出为大写。
%c:字符。
%d:十进制整数。
%e:使用科学计数法的浮点数,指数部分的e为小写。
%E:使用科学计数法的浮点数,指数部分的E为大写。
%i:整数,基本等同于%d。
%f:小数(包含 float 类型和 double类型) 。
%g:6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e为小写。
%G:等同于%g,唯一的区别是指数部分的E为大写。
%hd:十进制 short int型。
%ho:八进制 short int型。
%hx:十六进制 short int类型。
%hu: unsigned short int型。
%ld:十进制 long int类型。
%lo:八进制 long int类型。
%lx:十六进制 long int类型。
%lu: unsigned long int。
%lld:十进制 long long int类型。
%llo:八进制 long long int类型。
%llx:十六进制 long long int型。
%llu: unsigned long long int型。
%Le:科学计数法表示的long double类型浮点。
%Lf: long double类型浮点。
%n:已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
%0:八进制整数。
%p:指针。
%s:字符串。
%u:符(unsigned int)。
%x:十六进制整数。
%zd: size_t类型。
%%:输出一个百分号。
C语言常用占位符
%c:字符。
%d:十进制整数。
%i:整数,基本等同于%d。
%f:小数(包含 float 类型和 double类型) 。
%hd:十进制 short int型。
%ho:八进制 short int型。
%hx:十六进制 short int类型。
%Lf: long double类型浮点。
%0:八进制整数。
%p:指针。
%s:字符串。
%u:符(unsigned int)。
%x:十六进制整数。
%%:输出一个百分号。
四、变量和常量(初识)
变量:能储存计算结果或者表示值或其他数据的一种抽象概念。变量在计算机中其实是内存,对应有变量名和地址,这也正是我们操作内存的两种方式,通过变量名访问,通过地址访问。
当然,初学变量,就简单的理解为可改变的量。
#include <stdio.h>
int main()
{
int a;//定义一个变量,即在内存中开辟一段空间,变量名为a,地址为&a,存储数据类型为整数
a=10;//为a赋值为10,该内存中存储的数据就是10
a=20;//为a赋值为20,内存原存储数据10被新数据20覆盖
//改变存储的数据就是“变”量的”变“
return 0;
}
常量:不能被改变的一种数据。有以下几种常见常量类型:
#include <stdio.h>
#define NULL 0
int main()
{
const double pi=3.14;
NULL=1; //error,NULL为宏定义常量,不可以被改变
pi=5.21;//error,pi是被const修饰的double型常量,const即不变的,不变的变量即是一种常量
//另外,1,2,3,4,5等也是常量,不可以被改变,比如下行代码演示
5=3;//error,这明显就是错误的
return 0;
}
通常宏定义常量更为常用,但也不乏有些情况使用const也很合适
#include <math.h>//包含一些数学相关函数的头文件
void main()
{
const double pi=acos(-1);
//此时pi=3.1415926...,当然宏定义也可以实现,但个人习惯了这样使用,嘿嘿
}
另外,数据类型在计算机中的存储方式在此处不做过多介绍,但是博主可以告诉大家一些东西作为提前了解。(类型转换时的截断存储方式,精度丢失问题等等,还有许多啦,自己去查查吧)