• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

C语言标志符为什么不能以数字做开头?

乌托邦 2019-11-03 浏览量:1998
C语言标志符为什么不能以数字做开头?经常犯这样错误!!!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个是直接语言规定,当然从语法分析的角度稍微可以探讨这样的规定就是:如果允许这样的规定,你可以定义以数字开头的变量,而保持其他变量定义规则,则理论上就可以定义全数字变量 比如“123”,这个时候你在程序中写“123”到底是变量还是数字字面量?这会很混乱? 如果规则是 允许以数字字符开头,但以数字字符开头的,后面要求起码有一个非数字字符规则,则这个也和16进制数字字面量可能存在冲突,比如"0x123"、"0xabc"到底是变量名还是16进制数字字面量呢?由于这样的冲突使得变量分析要么规则定义很复杂(这也不行、那也不行),要么无非正确识别,所以还不如直接规定数字字符不能出现在变量名首字符中,这一可以直接减少很多问题的规则, 而且不利影响很小。我还没有切实遇到过 变量名首字符用 数字表达更方便的情况,稍微放到后面其实大多数时候也能很好的进行虚数区分(这个是变量名中包含数字的主要需求情况)。
    • 发布于 2019-11-04
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 这,举个极端的例子,假设在C代码中以数字开头定义个标识符或变量,如8***,后面可以跟数字,8923,那么问题来了,这个8923到底是标识符或变量的名字标志,还是一个实实在在的数?这样C的语法分析器无法判断。。。
    • 发布于2019-11-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 这是硬性规定啊,为了就是怕出错,不仅仅是人会错,机器也会错,所以严格制定规则以保证不会错
    • 发布于2019-11-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是语法规定,为了方便编译器识别变量,如果混用,那编译器无法区分是常量还是变量
    • 发布于2019-11-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 主要是C语言的强制规则,是大家通俗遵守的约定
    • 发布于2019-12-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

C语言标志符为什么不能以数字做开头?