C++术语疑问:operator与punctuator是否独立?其包含哪些元素?
C++中「punctuator」术语的解析
1. operator与punctuator是否为不同实体?
这个判断是正确的。C++标准中明确将operator(运算符)和punctuator(标点符号)作为两个独立的token类别,预处理标记转换为最终token时,需匹配这两类之一的词法形式,二者功能和定位完全不同:
- 运算符用于执行运算操作(如
+、=、<<); - 标点符号用于标记语法结构(如括号、分号、预处理指令的
#)。
和C语言的体系不同:C语言里punctuator是更大的范畴,其中一部分属于运算符;但C++将二者拆分为并列的独立类别。
2. C++中所有punctuator的列表
从标准定义的operator-or-punctuator集合中,属于punctuator的包括:
- 单字符标点:
{、}、[、]、(、)、;、:、.、?、@(C++20新增)、# - 多字符标点:
...、##
这些符号的核心作用是构建语法框架,不参与运算逻辑,和+、-、==这类运算符有明确区分。
内容的提问来源于stack exchange,提问作者pmor
相关产品推荐
相关产品推荐

