知识点
1)字面常量
int a = 10;//这里的10就是字面常量;
2)宏常量
#define pi 3.14//后面不加";"
宏常量后面为啥不加";"呢?并且不为其开辟空间。
原因是经过预编译之后,*.cpp/.c(源文件)会预编译成为 .i(预编译文件),在磁盘中是看不到.i(预编译文件的),除非在编译器中设置才可以。举个例子:
这是本程序的源文件:
#include<stdio.h>//预编译处理指令
#define pi 3.14//不给pi(宏常量分配空间)
int main()//定义主函数
{//函数体的开始
int r = 10;
float s ;
s = pi*r*r;
printf("s = %f",s);
}//函数体的结束
这是本程序经过预编译之后形成的预编译文件:
int main()
{
int r = 10;
float s ;
s = 3.14*r*r;//
printf("s = %f",s);
}
可以看到预编译文件中
#include<stdio.h>
#define pi 3.14
已经消失,若为#define pi 3.14;则预编译文件就会变成s = 3.14;rr;导致无法进行编译;由此,可得出宏常量实质上就是一种字符串的替换,预编译之后就会将其删除,因此也不必为其开辟空间。
3)const 关键字
const int a = 10;
a = 11;//这里会报错
带有"const"关键字的变量被称为常变量,不能再次进行赋值,因此会报错。
4)enum 枚举常量
enum week = {Mon = 1,Tues = 2,wed = 3,Thurs = 4,Fri = 5,Sat = 6, Sun = 7};//枚举常量
enum week x = Mon;//不能给变量赋值枚举常量以外的值
enum week = {Mon,Tues,wed,Thurs,Fri,Sat, Sun};//枚举常量
/*也可不给枚举常量赋值,则Mon默认值为0,Tues、wed......的值依次加一;*/
enum week = {Mon =-1,Tues,wed = 0,Thurs,Fri,Sat, Sun};
//也可以不完全则 Tues = 0;wed = 0;Thur = 1;依次递增
5)字符常量和字符串常量
单引号是字符的定界符;(看到单引号,里面就是字符)
双引号是字符串的定界符;(看到双引号,里面就是字符串)
6)转义字符
(加上\就会转变意义)
常见转义字符
转义字符 | 意义 |
---|---|
\n | 换行 |
\t | 水平制表符,调到下一个(TaB)位置,相当于四个空格 |
’ | 单引号 |
" | 双引号 |
\0 | 空字符 |
//应该加上转义字符
printf("\'");
printf("\"");
printf("E:\a图论");//"\a"为响铃的意思,若想输出正确的地址,应该为:
printf("E:\\a图论");
7)顺序语句、选择语句、循环语句
顺序语句:顺序执行
选择语句:if-else;if-else if…else if-else
循环语句:while()
do{}
while()
for( ; ; )