我知道在c语言中,文件作用域的初始化器有一些限制:你不能使用变量(即使是const),函数等等... 但我真的不明白为什么下面的代码无法工作:
#include <stdlib.h>
#include <stdio.h>
//unsigned long a = "string"[0] > '0'; // this does not compile
unsigned long a = 's' > '0'; // this works fine, output is "a = 1"
int main(void)
{
printf("a = %lu\n",a);
return 0;
}
为什么带有字符串文字的行会给出错误:initializer element is not constant。字符串文字不被视为常量吗? 有没有办法使其运作?
提前感谢。
something[other]
这样的下标表达式永远不是常量表达式。 - n. m.