C面谈产出
这是我的一道试题。我想知道是否应该使用C面谈产出,c,output,C,Output,这是我的一道试题。我想知道是否应该使用静态int。你能帮帮我吗?我不能容忍这种做法,这是一个可怕的想法。但从技术上讲,这符合问题的标准 void fun() { // What goes here? } void main() { int x = 20; fun(); x = 10; printf("%d",x); // Should print 20. } 标准免责声明适用 方法1:在内部作用域中创建一个新的x变量 void fun() { // Es
静态int
。你能帮帮我吗?我不能容忍这种做法,这是一个可怕的想法。但从技术上讲,这符合问题的标准
void fun()
{
// What goes here?
}
void main()
{
int x = 20;
fun();
x = 10;
printf("%d",x); // Should print 20.
}
标准免责声明适用 方法1:在内部作用域中创建一个新的
x
变量
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);
}
方法2:定义第二个变为10
的变量,以便x
始终可以是20
void fun()
{
#define fun() { int x
#define printf } printf
}
正如您所知,C中
main()
的两个有效签名是intmain(void)
和intmain(intargc,char**argv)
(或者等效地,intmain(intargc,char*argv[])
)。我能想到的唯一一件事,可能不是他们在追求什么(或者可能是,但我只是说,因为它说“在主函数中”),就是调用printf(“20\n”)代码>然后退出(0)
在fun()
中。是否只需要从主方法打印?您可以从fun()
内部打印20,然后从退出()。。。在测试中仍然是一个愚蠢的问题。你需要x是全局的,或者通过x来测试function@SudipBhattarai即使您这样做,x
在fun()
返回之后和printf()
prints.Ha之前被设置为10
。我应该知道有一种奇怪的方式。OP(@Muthu)知道(我这么说是因为我确信+void\u ptr已经知道这一点),这实际上并没有在fun()
中加入任何“逻辑”,因为这个#define
可以在任何地方(在使用之前)实现相同的结果(因为预处理/宏扩展发生在编译之前,也就是说,这在技术上只会更改main()
中的“逻辑”)。
void fun()
{
#define x x=20,y
}