C语言关键字,控制语句,main返回值
今天还是响应那几位朋友的要求,来发发本上火以前写的文章。
一、C语言关键字
以下是C语言的关键字(保留字),这些关键字不能作为常量名、变量名或其他标识符名称:
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 |
1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字:
inline |
restrict |
_Bool |
_Complex |
_Imaginary |
2011年12月8日,ISO发布C语言的新标准C11,该标准新增了7个C语言关键字:
_Alignas |
_Alignof |
_Atomic |
_Static_assert |
_Noreturn |
_Thread_local |
_Generic |
二、C语言控制语句
条件判断语句
/* if语句 */
if(...){
......
}
else{
......
}
/* switch语句 */
switch(...){
case ...: ...; break;
case ...: ...; break;
...
default : ...;
}
循环控制语句
/* while语句 */
while(...){
......
}
/* do...while语句 */
do
{
......
}while(...);
/* for语句 */
for(...; ...; ...){
......
}
转向语句
/* break语句 */
while(...){
......
break;
......
}
/* continue语句 */
while(...){
......
continue;
......
}
/* return语句 */
void ...(...){
......
return ...;
}
/* goto语句 */
goto ...;
......
...: ...
三、关于main返回值
很多的国内教材与视频喜欢使用void来作为声明main函数的类型说明,这样也就“顺理成章”的可以省略在main函数中使用return了,但殊不知这样是非常危险的。
很多朋友在声明main类型时,按照这类教程,将main函数的类型声明设置为void或者省略,然后不在main函数中return 0;,通常来说,这看上去并不会造成什么危害。一个返回值为整型的函数如果返回失败,实际隐含返回了一个“垃圾”整数,只要这个数不用到,也就无关紧要,这也是声明为void的朋友的想法之一。
然而,在某些情形下函数main的返回值却并非无关紧要。大多数C语言的main返回值都是用来告诉操作系统:这个程序执行是成功的函数失败的。规范的处理方案是返回值为0,代表程序执行成功,返回值非0,则表示程序执行失败,如果一个程序main函数不返回任何值或返回一个垃圾值,那么如果正在使用一个软件管理系统,或类似的辅助插件及程序,
这类系统会关注程序被调用后执行是成功还是失败,如果失败,可能还需要进行一些处理,那么这时,很可能会造成一些令人惊讶的结果。
什么?你说不按这来返回,反正你程序不希望有这类工具辅助处理?那你就大错特错了,虽然你程序并没设计这类东西,但你怎么保证用户的设备里没有?再话说回来,就算你真认为没必要,那么你难道不知道你程序调试时,有效的返回值可以辅助你判断程序出现的错误;难道你不知道你程序出错时,有效的返回值可以帮助引导用户自行修复程序么?总之,请将C语言的main函数规范发声明为int类型,然后写上return返回值吧。