我有以下 C 代码:
//declared at the beginning of the CAStar.c file:
int TERRAIN_PASSABLE = 1;
int TERRAIN_IMPASSABLE = 0;
int TERRAIN_SOME_WHAT_PASSABLE = 2;
我注意到对于这些变量中的任何一个,如果它们具有非零值,它们会被“nm”命令报告为类型“D”(已初始化):
_TERRAIN_PASSABLE |00000008| D |
_TERRAIN_SOME_WHAT_PASSABLE|00000004| D |
但是,那些初始化为 0 的报告为“B”(未初始化):
_TERRAIN_IMPASSABLE |00000000| B |
为什么“用 0 初始化”和“用除 0 以外的其他东西初始化”之间的区别?