首页 > 解决方案 > if 语句中的赋值 - 输出如何正确?

问题描述

代码

如果图像不可见。

#include <stdio.h>
int fun(int n)
{
    if(n=4)
    return n;
    else return 2*fun(n+1);
}
int main()
{
    printf("%d",fun(2));
}

这是代码片段,教授给出的输出为 4。

输出如何正确?是否有可能在'if-else'语句中分配n = 4,因为赋值运算符是正确的,但是“if”条件将不起作用,因为语法错误并且输出将直接给出为4。

标签: c++cif-statementsyntaxconditional-statements

解决方案


答案正确的,并且没有语法错误。

发生的事情是=赋值运算符,在 C/C++ 中,(n = 4)它是一个有效表达式,只要表达式不是,其计算结果为真,(n = 0)因为 n 将被 C 视为false。请注意,在 C/C++ 中,0isfalse和一切否则是true

因此,if (n = 4)完全有效并且总是评估为真。当然,在这个过程中,也会涉及到一个任务。

因此,在上面的代码中发生的是

  1. 整数n被赋值为 4 inn = 4
  2. (n=4)作为表达式返回 true。
  3. 返回 n (4)。

所以答案是4。


推荐阅读