Printf在函数中改变main中输出的值

时间:2015-10-10 13:39:53

标签: c

我对android:elevation功能的意外行为感到非常困惑。我有两个函数printf()main()。当我在dfs()中添加printf()语句时,我会在dfs() function中获得所需的输出,但是当我不在main()函数中添加printf()语句时比我得到dfs()的输出。

功能 - MAIN

0

功能 - DFS

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;
}

变量minans初始化为long long int dfs(int i, int j, long long int ans) { if(i==N) return ans; for(int itr = j; itr<=N; itr++) { if(P[itr] > P[i]) { minans = min(minans, dfs(itr,itr+1,ans + (H[itr] - H[i])*(H[itr] - H[i]) + A[itr])); //printf("%d %lld\n",i,minans); } } }

2 个答案:

答案 0 :(得分:0)

使用:

return minans;

在您的函数中,然后在主要用途中:

printf("**%lld\n",minans);

答案 1 :(得分:0)

如果if声明为false怎么办?然后你的功能return什么都没有。因此,在这种情况下未定义的行为。

您可以return minans从函数到main的值,然后将其打印在main中。

注意 - 我不会在您的计划中看到minans