目录
三.#include<>与””的区别(学习过程中发现的问题,补上去)
1.我们新建一个项目xx,只包含main.cpp一个文件编辑
2.在xx项目中添加一个头文件stdio.h,并使用#include”stdio.h”
1表达式语句 2函数调用语句 3控制语句 4复合语句 5空语句
这回叙述的为控制语句中的循环分支语句的if switch
一 .if
1.if(若为真)
执行语句;
2.if(age<18)
printf("未成年");
else
printf(“成年”);
3.多条件的话可以用else if
下图为else if 具体应用:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
int grad = 65;
if (grad >= 90)
{ //成绩大于等于90的为非常优秀
printf("%s", "非常优秀"); //在大于等于60且小于90为优秀
}
else if(grad >= 60 && grad < 90) //这里不能写成60<=grad<90,因为若grad=20,则会出现0<90
//命题为真则还会打印优秀,所以不能写成这种形式(下图有解释)
{
printf("%s", "优秀");
}
二.switch
1.选择结构语法
switch选择结构
语法结构:
switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
......
case 常量n:
代码块n;
break;
default:
代码块m;
break;
}
2.下列为具体列子
#include<stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int n = 1;
int m = 2;
switch (n)
{
case 1:m++;
case 2:n++;
case 3:
switch (n)
{ //swich可嵌套使用
case 1:n++;
case 2:m++; n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("%d %d",m,n); //最后输出结果为5 3
return 0;
} //执行规律:
根据switch中()里表达式的值,来匹配case后面的常量值,匹配上哪一个常量值,就执行对应的代码块,执行完代码块后。
执行break,退出整个switch选择结构,如果表达式的值与所有的case常量值都不匹配,则执行default语句中的代码块,然后执行break结束整个switch选择结构。
注意:
1)表达式的值可以是int、short、byte、char、枚举类型、String
2)case常量值不能重复,后面只能是字面 量,不能是自变量。
3)break的作用是结束整个switch结构,如果省略了,代码会继续向下执行,知道遇到break,或者执行到了default语句后结束整个switch选择结构
这个现象称之为“case穿透”,这个case穿透可以合理使用。
4)default语句是在表达式的与所有的case常量值不匹配的时候执行,可以省略。
default语句可以写在switch选择结构中的任意位置,一般写在switch选择结构的末尾。
三.#include<>与””的区别(学习过程中发现的问题,补上去)
C语言包含头文件有两种写法#include <stdio.h>和#include "stdio"(#include后面可以不空格),两种写法的区别如下:
#include <头文件> : 编译器只会从系统配置的库环境中去寻找头文件,不会搜索当前文件夹。通常用于引用标准库头文件。
#include "头文件" : 编译器会先从当前文件夹中寻找头文件,如果找不到则到系统默认库环境中去寻找。一般用于引用用户自己定义使用的头文件。
1.我们新建一个项目xx,只包含main.cpp一个文件
可以看到,无论是#include"stdio.h"还是#include<stdio.h>程序都能正常运行
解析:1)使用#include<stdio.h>添加头文件时,编译器到标准库头文件中查找,发现stdio.h头文件,将其复制到当前行;2)而使用#include”stdio.h”添加头文件时,编译器先到当前项目所在的文件夹中查找stdio.h头文件,发现没有这个头文件,于是编译器到系统默认库环境中去寻找,发现stdio.h头文件,将其复制到当前
2.在xx项目中添加一个头文件stdio.h,并使用#include”stdio.h”
编译器报错,原因是printf未声明。
解析:使用#include”stdio.h”添加头文件时,编译器先到当前项目所在的文件夹中查找stdio.h头文件,发现用户自定义的stdio.h头文件,于是编译器将其复制到当前行。这里展开的头文件是用户自定义的头文件,用户自定义的stdio.h头文件没声明printf函数,所以当然会报错。
3.再往stdio.h文件里添加#include<stdio.h>
程序就能正常运行了。
!!!!!!!注意#ifndef、#define、#endif作用:防止头文件被重复引用,防止被重复编译。
(点进看详细内容)
#ifndef 它是if not define的简写,是宏定义的一种,确切的说是预处理功能(宏定义、文件包含、条件编译)三种中的一种——条件编译。
使用#ifndef可以避免以下错误:如果在.h文件中定义了全局变量,一个C文件包含了.h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误;如果加了#ifndef则不会出现这种错误.