C的关键字和保留标识符

  关键字是保留字,不能用来做标识符(如变量名),例如: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 标准

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C语言和Java的标识符有以下区别: 1. 标识符命名规则不同:C语言标识符只能由字母、数字和下划线组成,而Java标识符可以使用任何Unicode字符。 2. 大小写敏感性不同:C语言标识符是大小写敏感的,而Java标识符是大小写敏感的。 3. 关键字不同:C语言和Java的关键字不完全相同,因此在命名标识符时需要注意。 4. 数据类型不同:C语言和Java的数据类型不完全相同,因此在命名变量时需要注意。 5. 类型定义不同:C语言使用typedef关键字来定义类型,而Java使用关键字class来定义类型。 总之,在使用标识符时,需要遵循各自的规则,以确保程序的正确性和可读性。 ### 回答2: C语言和Java的标识符有以下几个区别: 1. 关键字C语言和Java都有一些保留关键字,这些关键字在代码中有特殊的含义,不能作为标识符使用。但是C语言和Java的关键字并不完全相同,所以在命名变量或函数时要注意不要使用这些关键字。 2. 大小写敏感性:C语言是大小写敏感的,而Java是大小写不敏感的。这意味着在C语言中,区分大小写的标识符是不同的,而在Java中,不区分大小写的标识符被视为相同的。 3. 标识符长度:C语言中的标识符长度没有限制,可以是任意长度的字符串。而Java中的标识符长度最多只能是65535个字符。 4. 开头字符:在C语言中,标识符的第一个字符必须是字母或下划线(_),后续字符可以是字母、数字或下划线。而在Java中,标识符的第一个字符必须是字母,可以是大小写字母,后续字符可以是字母、数字或下划线。 5. 保留字:在Java中,有一些额外的保留字,这些保留字虽然在当前版本的Java中没有特殊的用途,但是它们不能作为标识符使用。 综上所述,C语言和Java的标识符关键字、大小写敏感性、标识符长度、开头字符和保留字等方面都有一些区别。在编写代码时,我们需要遵守相应语言标识符规则,以避免出现语法错误。 ### 回答3: C语言和Java都是常见的编程语言,它们有一些相似之处,但在标识符方面也存在一些区别。 首先,C语言和Java标识符的命名规则略有不同。在C语言中,标识符可以由字母、数字和下划线组成,并且必须以字母或下划线开头。另外,C语言对于标识符的大小写是敏感的,因此大小写不同的标识符被视为不同的标识符。而在Java中,标识符也可以由字母、数字和下划线组成,但必须以字母开头,并且对大小写不敏感。这意味着在Java中,大小写不同的标识符被视为相同的标识符。 其次,C语言和Java的关键字不同。C语言和Java都有自己的一组关键字,这些关键字具有特殊的意义,不能用作标识符C语言关键字包括"if"、"else"、"for"等,而Java的关键字则包括"if"、"else"、"for"等,虽然有一些相同,但也有一些不同的关键字。 最后,C语言和Java在标识符的命名习惯上也有一些差异。在C语言中,通常使用下划线作为多个单词的分隔符,例如"my_variable"。而在Java中,通常使用驼峰命名法(CamelCase)将多个单词连接在一起,其中每个单词的首字母大写,例如"myVariable"。 总而言之,C语言和Java在标识符方面存在一些区别。这些区别包括命名规则、关键字和命名习惯。了解和掌握这些区别对于在C语言和Java中编写规范和清晰的代码是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值