更改所需输出的C代码

时间:2013-09-29 01:37:02

标签: c

我遇到了这个面试问题。我知道这很棘手但却无法想到任何方法。

更改程序,使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;
   }

2 个答案:

答案 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()。