将'const int'赋给'int'时没有警告

时间:2013-12-23 02:36:43

标签: c

在规范的“简单分配”小节中,它具有约束

  • 左操作数具有限定或非限定算术类型,右侧具有算术类型

以下代码段似乎违反了这一点,但clang -Weverything没有发出任何警告。我怎么解释错了?

const int i = 5;
int j = i;

3 个答案:

答案 0 :(得分:6)

整数赋值由值完成。 const int表示int的4(或8)个字节是只读的。分配只是将i的字节复制到j指定的另一个位置。这涉及阅读i并写入j,两者都被声明为有效操作。

答案 1 :(得分:4)

您的代码不会执行任何分配,因此不会违反任何有关分配的规则。

(您的代码是初始化的声明。)

答案 2 :(得分:0)

试试i = j;你会看见。 gcc给你这个:“错误:只读变量的赋值”