static+#define 定义常量和宏+分支循环语句+关键字

目录

 一、static的作用

(一)static修饰局部变量

(二) static修饰全局变量

(三) static 修饰函数

二、#define 定义常量和宏 

三、switch语句

(一)在switch语句中的 break

1. break语句 的实际效果是把语句列表划分为不同的分支部分 

2.  其他形式

(二)default子句

1. switch嵌套

四、while循环

(一) while语句中的break

1. 作用

(二) while语句中的continue

1. 作用

(三)总结

五、for循环

(一) 语法

(二) break和continue在for循环中

(三)一些for循环的变种

1. for循环中的判断部分如果省略,就意味着判断恒为真

2. 省略初始化部分

3. 易错

六、do...while()循环 

(一) 语法

(二)执行流程

(三) 举例

七、常见关键字


 一、static的作用

(一)static修饰局部变量


一个普通的局部变量是放在栈区的,而被static的修饰的局部变量,是放在内存的静态区的
存储位置发生了变化,使得局部变量出了作用域不会销毁,影响了变量的生命周期,但是作用域不受影响

  • 没有static 

  • 有static

 

(二) static修饰全局变量

  •  一个全局变量在整个工程中都可以使用的!
  • 全局变量是具有外部链接属性的,在其他源文件内部只要适当地声明就可以使用
  • static修饰全局变量这时全局变量的外部链接属性就变成了内部链接属性,只能在自己所在的.c文件内部使用,其他.c文件无法使用影响了,影响了变量的作用域

(三) static 修饰函数

  • 函数是具有外部链接属性的
  • static 修饰函数 后,函数的外部链接属性就变成了内部链接属性被static修饰的函数只能在自己所在的.c文件内使用,其他.c文件无法使用,最终相当于影响了作用域 

 没有static

二、#define 定义常量和宏 

三、switch语句

switch(整型表达式)
{
  语句项;
}

(一)在switch语句中的 break

1. break语句 的实际效果是把语句列表划分为不同的分支部分 

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int day = 5;
	switch (day)
	{
	case 1:
		printf("星期1\n");
	case 2:
		printf("星期2\n");
	case 3:
		printf("星期3\n");
	case 4:
		printf("星期4\n");
	case 5:
		printf("星期5\n");
	case 6:
		printf("星期6\n");
	case 7:
		printf("星期天\n");
	}
	return 0;
}
  • 正确代码
#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int day = 3;
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	}
	return 0;
}

2.  其他形式

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	//1,2,3,4,5 工作日
	//6,7       休息日
	int day = 3;
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	default:
		printf("选择错误\n");
		break;
	}
	return 0;
}

(二)default子句

如果表达的值与所有的case标签的值都不匹配怎么办?
其实也没什么,结构就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
你可以在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。 

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int day = 9;
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	default:
		printf("选择错误!\n");
		break;
	}
	return 0;
}

1. switch嵌套

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 1;
	int m = 2;
	switch (n)
	{
	case 1:m++;
	case 2:n++;
	case 3:
		switch (n)
		{//switch允许嵌套使用
		case 1:n++;
		case 2:
			m++;n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("m = %d, n = %d\n", m, n);
	//
	return 0;
}

四、while循环

(一) while语句中的break

1. 作用

  • 在循环中只要遇到break,就停止后期的所有的循环,直接终止循环,while中的break是用于永久终止循环的

(二) while语句中的continue

1. 作用

  • continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断 

(三)总结

五、for循环

(一) 语法

for(表达式1; 表达式2; 表达式3)
循环语句;
  • 表达式1为初始化部分,用于初始化循环变量的
  • 表达式2为条件判断部分,用于判断循环时候终止
  • 表达式3为调整部分,用于循环条件的调整

(二) break和continue在for循环中

 

(三)一些for循环的变种

1. for循环中的判断部分如果省略,就意味着判断恒为真

2. 省略初始化部分

3. 易错

六、do...while()循环 

(一) 语法

do
循环语句;
while(表达式);

(二)执行流程

 

  

(三) 举例

 七、常见关键字

auto  break  case  char  const  continue  default  do  double else  enum 
extern float  for  goto  if  int  long  register   return  short  signed
sizeof  static struct  switch  typedef union  unsigned  void  volatile  while

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值