4

我似乎对 C++ 中的标点符号一无所知。我的大学在教授代币时甚至没有提到它,他们将其称为“特殊符号”并略过。这两个术语可以互换使用吗?如果在考试中被问到,我该如何用 80 到 100 个单词来写标点符号?我可能想知道它与编译器交互的方式,它与运算符的区别,或者其他可以在标点符号上建立一个好的简短注释的东西。

笔记:

在网上冲浪以获得高质量的答案后,我得到了这个。但这是一个非常简短的答案,这不是我想要的。

编辑:

即使是几点,我也可以建立一个简短的笔记。

4

1 回答 1

6

C++ 标准文档实际上似乎没有定义标点符号的含义,除了标点符号是词汇标记。具体来说:

[语法.lex]

token:
  identifier
  keyword
  literal
  operator
  punctuator

下面是来自 C 语言的定义:

6.4.6 标点符号

句法

标点符号:其中之一

[ ] ( ) { } . ->
++ -- & * + -  ~ !
/ % << >> < > <= >= == != ^ | && ||
? : ; ... = *=  /=  %=  > +=  -=  <<=  >>=  &= 
^= |= , # ## <: :> <% %> %: %:%:

语义

标点符号是具有独立句法和语义意义的符号。根据上下文,它可以指定要执行的操作(这反过来可能会产生一个值或函数指示符、产生副作用或它们的某种组合)在这种情况下,它被称为运算符(其他形式的运算符也在某些情况下存在)。操作数是操作员作用的实体。


C++ 的语法有类似的列表(引用最新的标准草案;列表包括新的运算符 <=>,它将在 C++20 中出现):

[lex.operators]

preprocessing-op-or-punc:其中之一

  {        }        [        ]        #        ##       (        )
  <:       :>       <%       %>       %:       %:%:     ;        :        ...
  new      delete   ?        ::       .        .*       ->       ->*      ~
  !        +        -        *        /        %        ^        &        |
  =        +=       -=       *=       /=       %=       ^=       &=       |=
  ==       !=       <        >        <=       >=       <=>      &&       ||
  <<       >>       <<=      >>=      ++       --       ,
  and      or       xor      not      bitand   bitor    compl     and_eq  
  or_eq    xor_eq   not_eq
于 2020-01-31T15:29:27.600 回答