在规范的“简单分配”小节中,它具有约束
以下代码段似乎违反了这一点,但clang -Weverything
没有发出任何警告。我怎么解释错了?
const int i = 5;
int j = i;
答案 0 :(得分:6)
整数赋值由值完成。 const int
表示int
的4(或8)个字节是只读的。分配只是将i
的字节复制到j
指定的另一个位置。这涉及阅读i
并写入j
,两者都被声明为有效操作。
答案 1 :(得分:4)
您的代码不会执行任何分配,因此不会违反任何有关分配的规则。
(您的代码是初始化的声明。)
答案 2 :(得分:0)
试试i = j;你会看见。 gcc给你这个:“错误:只读变量的赋值”