输入foundname,为什么答案输出ound - 爱问答

(爱问答)

输入foundname,为什么答案输出ound

#include <stdio.h>
#include <string.h>
char s[15];
int find(int k)
{
return (s[k++]);
}
void inter()
{
int j;
gets(s);
for(j=0;j<2;j++)
   main();
}
main(
{
static int i=0;
int w;
if(i==0)
  {i++;
   inter();
   } 
w=find(i++);
putchar(w);
 } 

首先,你的程序纯研究用,实际开发中毫无意义(没有人会在子函数中调用main的)

其次,你的结果肯定不是ound,而是oun

简单的分析下

if(i==0)  {i++;   inter();   } 因为i是静态变量,所以这个inter只会调用一次,这样在inter()调用main()就不会死循环

调用  inter();后,s="found name",而i==1

对for(j=0;j<2;j++)   main();调用两次main()

第一次:

调用w=find(i++); 也就是find(1),同时i=i+1=2

return (s[k++]); 这里的k++没有任何意义,当k为1时,返回'o',也就会输出一个o

第二次:

调用w=find(i++); 也就是find(2),同时i=i+1=3

return (s[k++]);k为2,返回'u',也就会输出一个u

而  inter();返回后,

再次执行w=find(i++);也就是find(3)

return (s[k++]);k为3,返回'n',也就会输出一个n

程序结束

结果就是

oun


若是你初学C,这种研究没有意义,不如自己多写几个常规的测试


下一篇:关于数据恢复

上一篇:厦门哪里有语言训练的?

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?