如何打印具有相同名称的全局变量和局部变量的值?
这是我的代码,我想打印15和12,但由于实例成员隐藏a的本地值被打印两次。
#include int a = 12; int main() { int a = 15; printf("Inside a's main local a = : %d\n",a); printf("In a global a = %d\n",a); return 0; }
为什么以及有没有办法在c中打印它? …顺便说一下,我在c ++中知道它。
在新的复合语句中使用extern
说明符。
这条路:
#include int a = 12; int main(void) { int a = 15; printf("Inside a's main local a = : %d\n", a); { extern int a; printf("In a global a = %d\n", a); } return 0; }
我知道这并没有直接回答你的问题,但最好的方法是更改局部变量的名称,使其不与全局变量的名称冲突。
如果您可以控制函数内部的代码(即,您可以添加extern
声明以使全局变量可见),那么您可以轻松更改变量的名称。
不可能分辨出哪个名字会更好。 实际上,变量无疑具有比a
更具描述性的名称。 它们的使用方式应该为您提供一些关于它们的好名称的指导。
如果他们实际上服务于同一目的,他们可能并不都需要存在。 您可以删除main()
的本地变量,或者更好的是删除全局变量并将本地(或其地址)传递给需要访问它的其他函数。
我想我在某种程度上找到了答案……它有效
#include int a = 5; int main() { int a=10; if(1) { extern int a; printf("global: %d\n", a); } printf("local: %d\n", a); return 0; }
add :: for global ambit
#include int a=12; int main() { int a=15; printf("Inside a's main local a = : %d\n",a); printf("In a global a = %d\n",::a); return 0; }