c - 当我在全局范围内将 char 变量分配给 int 变量时,为什么编译器会给出错误?

标签 c variables global

我有一个错误

initializer element is not constant

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

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

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

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

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

最佳答案

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

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

关于c - 当我在全局范围内将 char 变量分配给 int 变量时,为什么编译器会给出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50777779/

相关文章:

python - 在 Python 2.7 中使用变量引用类属性

你能在另一个文件中 extern #define 变量吗?

c++ - 将全局变量作为 const 引用传递

c++ - 全局字符数组不会被重新分配或正确输出

c - 为什么我在查找二叉搜索树的高度时得到不同的输出?

c - 用 C 语言编写 shell - 重定向/高级重定向实现

ios - __LP64__ 和 __arm64__ 在 Cocoa 中存在哪些定义可以在编译时区分平台?它们在哪里或如何定义?

c# - 将一个方法的属性用于另一个方法

xcode - 保留对 mainScreen() 和 defaultManager() 类型函数返回值的引用是否可以优化任何内容?

c - PrintList 函数无法正常工作