📜  门| GATE-CS-2017(Set 1)|第39章

📅  最后修改于: 2021-06-29 02:06:40             🧑  作者: Mango

考虑下面给出的C函数foobar

int foo(int val)
{
    int x = 0;
    while (val > 0)
    {
        x = x + foo(val--);
    }
    return val;
}

int bar(int val)
{
    int x = 0;
    while (val > 0)
    {
        x = x + bar(val-1);
    }
    return val;
}

调用foo(3)和bar(3)将导致:

(A)分别返回6和6
(B)无限循环和异常终止
(C)异常终止和无限循环
(D)两者均异常终止答案: (C)
说明:在函数foo中,每次在while foo中都使用值3调用foo,这是因为val是通过post decrement运算符传递的,因此值3会传递,而val会在以后递减。每次调用该函数时,都会创建一个新变量,因为传递的变量将通过值3传递给值。因此,该函数将突然关闭而不会返回任何值。在函数栏中,在while循环值中val变量的值未减小,仅保留3。 while循环中的bar函数用val-1即2调用,但val的值不递减,因此将导致无限循环。
这个问题的测验