繁体   English   中英

我如何将输出打印为以下程序的5?

[英]how do i print output as 5 of the following program?

# include <stdio.h>

int x = 5;
int main(void)
{

        int x = 7;
        printf("output = %d\n", x);

}

上面的程序将输出显示为7 如何在c中打印5

谢谢...

因此,您在问如何访问被本地遮挡的全局? 您不能在那个范围内,但是这样的事情应该起作用

# include <stdio.h>

int x = 5;
int get_global_x()
{
  return x;
}

int main(void)
{

        int x = 7;
        printf("output = %d\n", get_global_x());

}

不要在主函数中重新声明x变量...

实际上,我感觉到(可能是错误的)您的代码背后还有另一个问题,但是我会简短地回答一下:如果您要混合使用全局变量和局部变量,请尝试建立一个区分它们的约定; 例如ALL_CAPS中的globals喊出它的作用域:)


编辑:顺便说一句,您应该至少从编译器获得警告,用于重新定义不同的作用域/相同的名称变量。 确实不建议这样做。 尝试始终以最低警告为目标...

您需要给两个变量赋予有意义的名称。 我确定您没有在实际代码中使用x,所以这两个变量实际上具有相同的含义,因此名称相同吗? 如果是这样,您至少可以这样做(假设您的int是计数,但可以用于所有其他目的):

int global_countOfThings = 5;
int main(void)
{
    int countOfThings  = 7;
    printf("output = %d\n", global_countOfThings );    
}

但希望您能够执行以下操作:

int countOfDucks = 5;
int main(void)
{
    int countOfGeese  = 7;
    printf("output = %d\n", countOfDucks );    
}

当然,如果您可以通过一些方法将代码更改为不使用全局变量,从长远来看会更好。

您正在全局和局部范围内声明相同的变量。 如果在全局和局部范围内声明了相同的变量,则该变量将被视为局部变量。 这就是您得到答案为7的原因。

删除x = 7行,在打印值之前移动print语句,或将其他变量设置为7(即,写y = 7而不是x = 7)。

您已经声明x的行为就像是全局变量。要打印5,您可以将pritf语句编写为:printf(“%d \\ n”,x-2); 以上将打印5。

如果要5,为什么要分配7? :-)还是要访问与本地变量同名的全局变量? 然后,您可能会使用命名空间...不确定C :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM