我遇到了这个面试问题。我知道这很棘手但却无法想到任何方法。
更改程序,使printf的输出始终为20
。只能更改foo()
。 main()
功能无法更改。
void foo()
{
// Add Here
}
int main()
{
int i = 20;
foo();
i = 100;
printf("%d", i);
//Some other computation. Doesn't have any printf statements.
return 0;
}
答案 0 :(得分:2)
我们可以使用Macro Arguments来改变printf的输出。
void foo()
{
#define printf(x, y) printf(x, 20);
}
int main()
{
int i = 20;
foo();
i = 100;
printf("%d", i);
return 0;
}
通过使用此功能,printf("%d",i)
期间将映射到宏扩展printf("%d",20)
答案 1 :(得分:1)
foo()只能打印20并调用exit()。