我看到关于c ++编程上下文的问题,我检查一个解决方案,我的一个朋友给我这个代码它的工作完美但我无法理解它的逻辑以及它是如何工作的。 我向他询问了这件事,但他也不知道该程序是如何运作的,我认为他也是从某个地方采取这个解决方案。 任何人都可以在行中解释我的意思背后的逻辑(&main +
(&exit - &main)*(j/1000))(j+1);
?
#include #include void main(int j) { printf("%dn", j); (&main + (&exit - &main)*(j/1000))(j+1); }
提前致谢
它的工作原理如下:
执行int
division j/1000
,当j
小于j/1000
,它将返回0
。 所以指针操作如下:
&main + 0 = &main, for j < 1000.
然后它调用由作为参数j+1
传递的指针操作指向的结果函数。 当j
小于1000
,它将以比前一步更多的参数1递归调用main。
当j
的值达到1000
,整数除法j/1000
等于1
,指针操作产生以下结果:
&main + &exit - &main = &exit.
然后它调用exit
函数,完成程序执行。
我已经给出了已经给出的解释,但如果写成如下,将更容易理解:
void main(int j) { if(j == 1001) return; else { printf("%dn", j); main(j+1); } }
上面的代码与已编写的代码相同。
需要了解更多c/c++开发分享打印1到1000没有使用循环,也可以关注C/ C++技术分享栏目---计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享打印1到1000没有使用循环相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/980379.html