首页 > 解决方案 > 为什么当我在全局范围内将 char 变量分配给 int 变量时编译器会给我错误?

问题描述

我有一个错误

初始化元素不是常量

当我在全局范围内初始化变量时,这是我的错误代码

char x = 65 ;
int c =  x ;
int main(void) {

    printf("%d",c); /* prints !!!Hello World!!! */
    return EXIT_SUCCESS;
}

但是当我在 main 函数中初始化 int 变量时,它可以正常工作

char x = 65 ;
int main(void) {
    int c =  x ;
    printf("%d",c); /* prints !!!Hello World!!! */
    return EXIT_SUCCESS;
}

标签: cvariablesglobal

解决方案


全局变量的初始化器必须是编译时常量。另一个变量(甚至是const变量)的值不是编译时常量。

数值常量(或仅由数值常量组成的表达式)是编译时常量。


推荐阅读