我在 C++ 编程上下文中看到这个问题,我检查了一个解决方案,我的一位朋友给了我这段代码,它工作完美,但我无法理解它的逻辑以及它是如何工作的。我向他询问了这个问题,但他也不知道该程序实际上是如何工作的,我认为他也从某个地方采用了这个解决方案。任何人都可以解释这背后的逻辑,我的意思是在线(&main +
(&exit - &main)*(j/1000))(j+1);
?
#include <stdio.h>
#include <stdlib.h>
void main(int j) {
printf("%d\n", j);
(&main + (&exit - &main)*(j/1000))(j+1);
}
提前致谢
其工作原理如下:
执行int
分配j/1000
,这将返回0
总是同时j
小于1000
。
所以指针的操作如下:
&main + 0 = &main, for j < 1000.
然后它调用作为参数传递的指针操作所指向的结果函数j+1
.
While j
小于1000
,它将递归调用 main,参数比之前的步骤多一个。
当值为j
达到1000
,然后整数除法j/1000
等于1
,指针运算结果如下:
&main + &exit - &main = &exit.
然后它调用exit
函数,完成程序执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)