C采访输出

问题描述 投票:-1回答:2
void fun()
{
    // What goes here?
}
void main()
{
    int x = 20;
    fun();
    x = 10;
    printf("%d",x); // Should print 20.
}

这是我的测试问题之一。我想知道我是否应该使用static int。你能帮我么?

c output
2个回答
11
投票

我不宽恕这种做法,这是一个可怕的想法。但从技术上讲,这符合问题的标准。

void fun()
{
// Essentially this is a function with an empty body
// And I don't care about () in a macro
// Because this is evil, regardless
#define printf(a, b) (printf)(a, b*2)
}

void main() // I know this is not a valid main() signature
{
  int x = 20;
  fun();
  x = 10;
  printf("%d", x);
}

1
投票

标准免责声明适用。

方法1:在内部范围中创建新的x变量。

void fun()
{
    #define fun() { int x
    #define printf } printf
}

方法2:定义第二个变量,该变量更改为10,以便x始终为20

void fun()
{
    #define x x=20,y
}
© www.soinside.com 2019 - 2024. All rights reserved.