C 函数中的Printf更改main中输出的值
我完全被C 函数中的Printf更改main中输出的值,c,C,我完全被printf()函数的意外行为所迷惑。我有两个函数main()和dfs()。当我在dfs()函数中添加printf()语句时,我在main()中获得所需的输出,但当我在dfs()函数中不添加printf()语句时,我得到的输出为0 功能-主 int main() { freopen("input.txt","r",stdin); scanf("%d",&N); for(int i=1; i<=N; i++) scanf("%lld",
printf()
函数的意外行为所迷惑。我有两个函数main()
和dfs()
。当我在dfs()函数中添加printf()
语句时,我在main()
中获得所需的输出,但当我在dfs()
函数中不添加printf()
语句时,我得到的输出为0
功能-主
int main()
{
freopen("input.txt","r",stdin);
scanf("%d",&N);
for(int i=1; i<=N; i++)
scanf("%lld",&P[i]);
for(int i=1; i<=N; i++)
scanf("%lld",&A[i]);
for(int i=1; i<=N; i++)
scanf("%lld",&H[i]);
dfs(1,2,0); minans += A[1];
printf("**%lld\n",minans);
return 0;
}
intmain()
{
freopen(“input.txt”,“r”,stdin);
scanf(“%d”和“&N”);
对于(int i=1;i使用:
在您的功能和主要用途中:
printf("**%lld\n",minans);
如果
语句为
false,则函数返回的值为零。因此,在这种情况下,行为未定义
您可以将minans
的值从函数返回到main
,然后在main
中打印它
注意-我看不到程序中任何地方声明了minans
。未定义的行为。如果未从dfs
返回值,则需要启用更多编译器警告。另外,在dfs的第一行中,我将返回一个值。@BaummitAugen:我该怎么做?返回值仍将被丢弃。..doesn无法解决从未声明或初始化的minans
问题。@vishal:请阅读之前的完整帖子。我提到minans被初始化为111111111。@user3811219声明在哪里?@user3811219不,minans
没有声明或初始化。你不能告诉我们代码做一件事,然后发布代码发布你的真实代码,否则你的问题将被关闭。这就解释了这种异常行为,当我使用printf时,它返回printf返回的值。所以一切都被它覆盖了,当我删除它时。printf没有返回任何东西。(谢谢大家!)minans
未声明或初始化。
return minans;
printf("**%lld\n",minans);