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返回值吧。