void fun()
{
// What goes here?
}
void main()
{
int x = 20;
fun();
x = 10;
printf("%d",x); // Should print 20.
}
这是我的测试问题之一。我想知道我是否应该使用static int
。你能帮我么?
我不宽恕这种做法,这是一个可怕的想法。但从技术上讲,这符合问题的标准。
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:在内部范围中创建新的x
变量。
void fun()
{
#define fun() { int x
#define printf } printf
}
方法2:定义第二个变量,该变量更改为10
,以便x
始终为20
。
void fun()
{
#define x x=20,y
}