gpt4 book ai didi

c++ - C++标点符号的使用逻辑是什么?

转载 作者:太空狗 更新时间:2023-10-29 20:30:09 24 4
gpt4 key购买 nike

我试图辨别 C++ 中标点符号使用背后的逻辑,尤其是分号。这是我到目前为止的进展,有一些问题:

  • 声明将类型、类或对象引入范围,例如int i;
  • 表达式是运算符和操作数的序列,例如a=i+1; i++;
  • 语句是表达式或声明。

  • ()括号将表达式的部分和环绕测试分组,例如if(a==b) , while(a==b) , switch(myTestVal)for(int i=0;i<5;i++)

  • {}大括号定义范围和组语句以及数组、枚举和结构的初始化列表,但为什么不是类!此外,在 switch 语句中需要它们来包围它的主体,以便 break 知道从哪里继续。

  • ,逗号分隔列表中的项目,例如参数列表或数组初始化列表。

  • :冒号用在标签之后,例如在 switch 语句的 case 部分之后,以及分隔语句的各个部分,例如在第三运算符“?”中。

    但是;而不是 :用于分隔 for 的各个部分声明例如for(i=0;i<5;i++) — 这是为什么?

  • ;分号终止语句(表达式和声明),除非它们被 ) 终止。 , 或 :例如在测试中:(a==(c+b*d))或参数列表。

请注意 }不算作终止语句,所以在 } 之后在函数或类声明的末尾 ;必须使用,因为整个声明是一个声明,由许多其他声明组成。但是,函数或类的实现不是声明(因为函数或类必须已经声明);因此它不算作声明,因此没有结束语 ;收盘后}

最后一个奇怪之处:为什么 ; 是在 do...while 之后需要?

最佳答案

有关如何使用分号的明确答案,请参阅:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf

请参阅附录 A。

至于为什么在看起来多余的地方需要分号,例如

struct A {};

事实上你可以说:

struct A {} a;

因此在 ; 之间有一个位置,您可以在其中放置一个标识符。因此需要更复杂的语法。

但并非所有不一致都基于全局有效的“逻辑”。 C++ 继承了 C 的语法,并且这两种语言都有一个进化的语法,必须在不破坏现有代码的大量基础的情况下引入新的功能。它们带有这种进化的伤痕。

关于c++ - C++标点符号的使用逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7825159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com