我明白常量正确性是什么意思,我的问题不是常量正确性是什么.因此,我不期望得到解释或C++常见问题解答链接.

我的问题是:

  • What are the semantic differences between 100 in C and 100 in C++?
  • What is the reason for the difference?

引用各自的标准,清楚地说明不同之处,如果有的话,那就更好了.

我经常在C和C++之间切换,我想知道在做这些事情时应该记住的要点.

我似乎不记得这些的原因了(如果你能提供一个理由,特别感谢),但从我的脑海中,我记得:

  • C++中的const变量默认有内部链接,而C中有默认的外部链接;
  • const对象可以用作C++中的编译时值,但不能用作C中的编译时值;
  • 指向字符串文字的指针必须是C++中的char const*,而在C中指针可以是char*.

我错过了什么?

推荐答案

除了您提到的差异和库差异之外, 史蒂夫·杰索普提到,

char* p1;
char const* const* p2 = &p1;

在C++中是合法的,但在C中不合法.从历史上看,这是因为C++ 最初允许:

char* p1;
char const** p2 = &p1;

在该标准被采用前不久,有人意识到

C++相关问答推荐

int_leastX_t与intX_t不同吗?

DPDK-DumpCap不捕获端口上的传入数据包

如何一次获取一个字符

GCC预处理宏和#杂注GCC展开

如果dim指定数组中的数据量,使用dim-1会不会潜在地导致丢失一个元素?

将uintptr_t添加到指针是否对称?

初始变量重置后,char[]的赋值将消失

tick.q中的Kdb+键控表语法

为什么未初始化的 struct 的数组从另一个数组获取值?

在编写代码时,Clion比vscode有更多的问题指示器

类型定义 struct 与简单的类型定义 struct

这段代码用于在C中以相反的顺序打印数组,但它不起作用

如果格式字符串的内存与printf的一个参数共享,会发生什么情况?

C中的回文数字

共享目标代码似乎不能在Linux上的进程之间共享

为什么一个在线编译器拒绝这个VLA代码,而本地的Apple clang却不拒绝;t?

atoi函数最大长-长误差的再创造

使用 strtok 多次分割一个字符串会导致意外行为

函数的typedef是标准 C 语法吗?它与函数指针的typedef有何不同?

使用fread()函数读取txt文件