由四个C++声明符号组成的整个组的名称
Name of entire group of four C++ declaration symbols?
我的理解是,一般来说,整个非字母数字字符组,如*、?、;、#,等等可以称为标点符号。然而,在这样的表达式中
3*4
*特别被称为"运算符",而在像这样的声明中
int *p;
*不是运算符,而只是表示p是指针。类似地,3个附加符号&,[]和()在声明中使用时不被称为运算符。我知道所有这些符号在不同的上下文中意味着什么,它们是如何发音的,它们的作用是什么,但在声明中使用时,这四个符号是否有一个特定的名称?我一直称它们为"属性",因为没有更好的东西,我在语言标准中找不到任何关于团队名称的具体内容。
如您所知,*、?、;、#等字符等等在C和C++中被称为标点符号。
标点符号是对编译器,,但具体意义取决于上下文A标点符号也可以是在预处理器。
标点符号不是运算符或标识符有些字符可以用作标点符号、运算符或运算符的一部分发生的上下文指定含义
来自C标准6.4.6:
标点符号是一种具有独立句法和语义意义的符号根据上下文,它可以指定要执行的操作(这反过来可能产生一个值或函数指示符,产生副作用,或其组合),在这种情况下,它被称为运算符(某些上下文中也存在其他形式的运算符)。操作数是运算符作用于其上的实体。它们的含义因使用环境而异。因此,整个四个符号组没有特定的名称,如果你想用一个单词来称呼它们,那么,我相信,单词标点符号是最合适的单词。
附加:大多数标点符号在C和C++中很常见。但是C++有一些附加的标点符号,如::
、.*
、new
、delete
等。
但是在声明中使用时,这整个四个符号组是否有特定的名称?
有点。在声明中引用这些符号的语法结构是"声明符"。然而,这个名称在标准讨论之外并没有真正使用;只是没有太多必要将声明符符号作为一个组来引用。
此外,还有更多的声明符符号。在C中,有()
(用于函数声明)。C++为我们提供了...
(参数包声明)和&&
(r值引用)。
在语句声明中使用时,这4个符号被视为声明符修饰符。分类器punctuator简单地表示它们可以在多个上下文中使用,因此它们也被认为是punctuators。https://msdn.microsoft.com/en-us/library/aa267831(v=vs.60).aspx
当在非声明性庄园中使用时:所有4个符号(*,&,[],())都被认为是c++中的运算符。有不同类型的运算符,如算术运算符、关系运算符和逻辑运算符。乘法符号属于算术运算符类别,其中其他4个运算符属于其他运算符类别。*称为尊重运算符&称为运算符的地址。[]称为下标运算符。()被称为函数调用运算符。由于它们都被认为是c++中的运算符,这意味着您可以覆盖它们的功能。
这是一个很好的链接,它演示了c++中的运算符优先级:http://www.geeksforgeeks.org/operators-c-c/
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- 函数指针给我"重新声明为不同类型的符号"错误
- 用 Q_DECLARE_METATYPE 声明无符号的 char[]
- 重复符号 --- 定义和声明之间的差异
- 在 Cpp 标头中声明的常量变量应具有多少个符号条目
- 在C++中声明多维浮点或无符号动态数组
- 在 cpp 正文中声明方法时未定义的符号
- 尝试使用 std::函数(未定义的符号)声明模板化类状态时出现链接错误
- 错误:"int sqlite3_open"重新声明为不同类型的符号"
- 由四个C++声明符号组成的整个组的名称
- 前向声明导致"找到一个或多个多重定义的符号"?
- 方法声明 c++ 后的引用符号
- 使用无符号字符和字符串作为函数声明
- C++模板,不同的声明和定义,链接器无法解析符号
- 在类声明中定义静态变量时未解析的外部符号
- 声明表变量时未解析的外部符号
- OpenCV 符号未在此范围内声明
- 符号"重新声明(有符号/无符号,精度)与
- 声明一个无符号int和一个数组的无序映射(将具有不同的大小)
- ODB:在公共声明中包含 *.hxx 文件时未解决的外部符号错误