【发布时间】:2021-07-01 11:52:14
【问题描述】:
我对 C 中 lValues 和 rValues 的定义以及数组适合的位置有疑问: 我一直认为数组,例如
int arr[10];
是不可修改的左值。但是,如果您像可修改的 lValues 一样使用它们,例如这里:arr++;,并尝试编译它,我没有收到预期的错误消息。该消息是“需要作为增量操作数的左值”。对于其他不可修改的 lValue,例如常量,消息是“只读变量的增量”。
这是为什么呢?
【问题讨论】:
-
具体的诊断信息是个别实现的功能;您必须询问编写该编译器的人为什么要使用这些特定消息。但请注意,常量不是不可修改的左值,它们是 rvalues (它们不指定内存位置),因此编译器可能会沿着不同的处理路径进行处理,因此它是错误消息不同也就不足为奇了。