【发布时间】:2018-06-29 16:19:33
【问题描述】:
Wiki page 声称 C++ 中的限定符是 const 和 volatile。
This answer告诉unsigned、unsigned和short等也是限定符。尽管问题确实提到了它是关于 C 的,但 Wiki page 在 C 方面也没有这么说。对于 C,限定符是 const、volatile、restrict 和 _Atomic。
Stack Overflow 的qualifier Tag 的扩展消息框显示
限定符增加了额外的“质量”,例如指定波动性或 变量的常数
“添加一个额外的质量”,从引用来看,singed/unsigned 似乎满足条件,它将受限的额外质量添加到一个整数中,这样它就可以只包含正数或负数。
我现在对这个问题有点困惑。对于C和C++,是signed、unsigned和short等算作基类型的一部分或类型限定符?如果 C 和 C++ 中的规则不同,请详细说明。
【问题讨论】:
-
“对于除引用和函数之外的所有类型,类型系统支持该类型的三个额外的 cv 限定版本(const、volatile 和 const volatile)。” 请参阅: en.cppreference.com/w/cpp/language/type 和 en.cppreference.com/w/cpp/language/types 这对于 C 和 C++ 来说可能是不同的。
-
signed和unsigned不能用于任何类型。 C11_Generic是按类型划分的开关盒。它丢弃const和volatilequalitfier,但不丢弃signness。但这真的重要吗?你可以检查标准,但即使那样它仍然只是一个文字游戏。 -
@SLN 更正了谢谢现在应该说 .../type 和 .../types
-
区分 C++ 标准定义的“限定符”和字典中定义的“限定符”有些重要。有些文本似乎使用“限定符”作为“说明符”的同义词,这不是标准含义。
-
C++ 中所有类型的图形表示,以及它们的分类方式:howardhinnant.github.io/TypeHiearchy.pdf
标签: c++ c qualifiers