博客主页:https://blog.csdn.net/wkd_007
博客内容:嵌入式开发、Linux、C语言、C++、数据结构、音视频
本文内容:介绍标准C语言的32个关键字
金句分享:有机会一定要试试,其实试错的成本并不高,而错过的成本很高
C语言32个关键字详解(1):数据类型部分(char、short、int、long、float、double、struct、union、enum、void)
C语言32个关键字详解(2):修饰类型部分(auto、signed、unsigned、static、extern、const、register、volatile)
C语言32个关键字详解(3):结构语句部分(if、else、switch、case、default、do、while、for、break、continue、return、goto)
C语言32个关键字详解(4):其他(typedef、sizeof)
C语言的关键字有32个,我将它主要分成下面四个方面来介绍。
功能 | 关键字 |
---|---|
类型(10个) | char、short、int、long、float、double、struct、union、enum、void |
修饰类型(8个) | auto、signed、unsigned、static、extern、const、register、volatile |
结构语句(12个) | if、else、switch、case、default、do、while、for、break、continue、return、goto |
其他(2个) | typedef、sizeof |
前面介绍了char、short、int、long、float、double、struct、union、enum、void、auto、signed、unsigned、static、extern、const、register、volatile
;
这篇文章主要介绍if、else、switch、case、default、do、while、for、break、continue、return、goto
这几个与结构语句相关的。
if、else 这两个关键字在C语言中的作用是用了组成分支语句if(){}else{}
的。其结构组合主要有以下几种:
// 第一种:单纯的 if 语句
if(条件){
...
}
// 第二种:if ... else ...语句
if(条件){
...
}
else{
...
}
// 第三种:if ... else if...语句
if(条件){
...
}
else if{
...
}
// 第四种:if ... else if... else... 语句
if(条件){
...
}
else if{
...
}
else{
...
}
几个注意点:
else
始终与同一括号内最近的未匹配的 if
语句结合。if
语句判断bool变量时,尽量写成下面代码的第三种,让人直观地知道bTestFlag
是一个bool变量。bTestFlag
是整型变量;FLASE
的值被定义为0
,但只要非0
都是TRUE
,也不特别恰当;bool bTestFlag = FALSE;//想想为什么一般初始化为 FALSE 比较好?
if(bTestFlag == 0); if(bTestFlag == 1); // 第一种:
if(bTestFlag == TRUE); if(bTestFlag == FLASE);// 第二种:
if(bTestFlag); if(!bTestFlag); // 第三种方式
==
比较。因为 float
和 double
类型的数据都是有精度限制的,这样直接与 0.0
比较容易出错。用下面代码第二种写法。float fTestVal = 0.0;
1、if(fTestVal == 0.0); if(fTestVal != 0.0);
2、if((fTestVal >= -EPSINON) && (fTestVal <= EPSINON)); //EPSINON 为定义好的精度。
NULL
比较,让人直观清楚该变量是指针。采样下面代码第三种写法:int * p = NULL;//定义指针一定要同时初始化,指针与数组那章会详细讲解。
1、if(p == 0); if(p != 0);
2、if(p); if(!p);
3、if(NULL == p); if(NULL != p);
if语句
后写分号,否则该分支什么也没有执行。if(NULL != p)
等同于下面代码:if(NULL != p)
{
;
}
一般情况下,switch、case、default三个关键字一起使用,构成switch语句,其语句形式如下:
switch(表达式){
case 常量表达式 1: 语句 1;
case 常量表达式 2: 语句 2;
…
case 常量表达式 n: 语句 n;
default : 语句 n+1;
}
几个注意点:
case
语句的结尾都要加break;
,否则会造成多个分支重叠;default
分支,即使用不到也要保留default : break;
case
后面的值只能
是常量或者常量表达式;case
语句中,如果要定义变量,必须使用大括号{}
包含起来,如:switch(表达式){
case 常量表达式 1:
{
int i = 0;
}
default :
break;;
}
C语言中循环语句有3种:while语句
、do - while语句
、for语句
。
do、while、for三个关键字的作用是:用来编写这三种循环语句:
// while语句一般形式
while(表达式) 语句;
// do-while语句一般形式
do
语句
while(表达式);
// for语句一般形式
for(表达式 1; 表达式 2; 表达式 3) 语句
几个注意点:
1、在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数。
2、不能在 for 循环体内修改循环变量,防止循环失控。
break
关键字在循环语句种表示终止本层循环,在case
语句中表示跳出switch
语句。
continue
关键字表示终止本次(本轮)循环,只在循环语句中使用,不能再其他地方使用。
return
关键字用来终止一个函数并返回其后面跟着的值。
return (Val);
语句中的括号可以省略。但一般不省略,尤其在返回一个表达式的值时。
return;
语句不带任何返回值也是被允许的。单纯的终止函数。
注意不要返回局部指针变量,也就是不可返回指向栈内存
的指针;
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
char * Func(void)
{
char str[30];
…
return str;// 错误:str是Func函数里定义的,函数结束后会销毁该内存,不可被返回
}
goto 关键字用了构成goto语句
,是一种无条件跳转语句。其使用格式为:goto 语句标号;
。
下面代码演示goto 语句
static int func(ui_msg_t *pmsg)
{
int ret = fun();
if(ret < 0)
{
goto __error;
}
return 0;
__error:
//Printf(">>>>>>>>>>>>>> error.\n");
return -1;
}
goto语句
通常不用,主要因为它将使程序层次不清,且不易读;
一些书籍主张慎用或禁用goto语句
,所以读者可以不需要太关注这个关键字。
本文主要介绍C语言32个关键字——结构语句部分(if、else、switch、case、default、do、while、for、break、continue、return、goto)。
如果文章有帮助的话,点赞、收藏⭐,支持一波,谢谢