c - 为什么当我在全局范围内将 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;
}
解决方案
全局变量的初始化器必须是编译时常量。另一个变量(甚至是const
变量)的值不是编译时常量。
数值常量(或仅由数值常量组成的表达式)是编译时常量。
推荐阅读
- r - 如何避免我非常大的嵌套 for 循环?
- python - 如何制作保存到文件的字典
- node.js - TypeError:无法读取未定义 Discord.js 的属性“公会”
- javascript - 通过传递的道具使用地图并渲染结果
- python - 测试函数是否返回正确的函数
- c++ - 使用成员初始化器列表进行初始化时如何修复 [-Wreorder] 和 [-Wuninitialized] 冲突?
- php - 一个正则表达式中的两个条件
- ios - Swift 库导致 iPhone 上的 Objective-C 应用程序随机崩溃
- c - 无法在 C 中定义全局数组,其大小定义为符号常量
- safari - Safari中标签和搜索栏中的图标不同