嗯,它变得如此混乱。以下 IBM Support Portal 链接似乎暗示我们不能将const
限定变量用作实常数的原因是因为它们的生命周期与程序本身的生命周期不同。似乎是说仅关于局部变量,因为全局变量具有与程序相同的生命周期。(IBMLINK)。这就是它所说的:
An object that is declared const is guaranteed to remain constant for its lifetime, not throughout the entire execution of the program. For this reason, a const object cannot be used in constant expressions.
但是在下面的程序中,由于const
限定变量的生命周期与程序执行的生命周期相同,为什么我case
在switch-case语句中使用它时仍然会出现错误,应该是一个常量?给出以下错误:
|11|错误:case 标签没有减少为整数常量|
#include<stdio.h>
const int x=2;
int main(void)
{
switch(2)
{
case 1:
printf("Hello");
break;
case x:
printf("Hola");
}
}