C的关键字和保留标识符

您所在的位置:网站首页 c语言不正确的标识符 C的关键字和保留标识符

C的关键字和保留标识符

2024-07-15 09:13| 来源: 网络整理| 查看: 265

 

     关键字是保留字,不能用来做标识符(如变量名),例如:int double; 是错误的,因为 double 是关键字,不能做变量名。使用关键字来做变量名是一种语法错误,不能通过编译!下表列出了 C 语言的所有关键字,其中红色的是 ISO C99 标准新增的关键字。

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

    C 语言已经使用了的标识符,以及使用权利被 C 语言保留的标识符,称为保留标识符。保留标识符包括以下划线(_)开始的标识符(如 __LINE__)和标准库里定义的函数的函数名(如 printf)。    我们不应该使用保留标识符来做我们自定义的变量或者函数等的标识符。使用保留标识符来做自定义变量或者函数等的标识符不是语法错误,可以通过编译,因为保留标识符是合法的标识符,符合标识符命名法则。但是,因为这些标识符已经被 C 语言使用或者保留了,所以使用保留标识符来做自定义变量或者函数等的标识符可能会引起意想不到的问题。

参考资料:C Primer Plus, 5th Edtion By Stephen Prata

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。

 

    过去,我们一般使用 int 型变量表示真/假。C99 新增了 _Bool 类型(布尔类型)用于表示真/假。_Bool 类型的变量的值只能是 0 或者 1。无论赋予任何非零值给 _Bool 类型的变量,它的值都只会是 1。例如:

        _Bool i_am_true = 15;          // i_am_true 的值是 1        _Bool am_i_true = (var > 15);  // 当 var 大于 15 时,am_i_true 的值为 1

顺带一提,包围 var > 15 的括号要不要都一样,因为 > 的优先级比 = 高。不过,使用括号可以使代码的意思更加清晰明了。对于各种运算符的优先级,其实没有必要死记硬背,了解一下就可以了。实在不记得到底哪个运算符的优先级更高的时候,就用括号把希望优先运算的部分括住。此外,定义 _Bool 变量时,最好选一个意思明确的名字,让人一看就知道它是做什么用的。例如:

        _Bool no_error = 1;        while ( no_error )        {            /*    ... ...       */            /* if error happens */            /*    no_error = 0; */            /*    ... ...       */        }

    包含标准头文件 stdbool.h 后,我们可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。例如:

        bool no_error = true;        no_error = false;

这么做是为了和 C++ 兼容。注意,stdbool.h 是 C99 新增的。

    使用文本编辑器打开 stdbool.h,一般都会找到这样三句

        #define bool    _Bool        #define true    1        #define false   0

这就是为什么包含 stdbool.h 后可以用 bool 代替 _Bool ,true 代替 1 ,false 代替 0 。

参考资料:C Primer 5th Edition          The C Programming Language 2nd Edition          C99 标准

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 antigloss 共同所有,转载请注明原作者和出处。谢谢。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3