c++ - 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/C++ 中,(n = 4)
它是一个有效表达式,只要表达式不是,其计算结果为真,(n = 0)
因为 n 将被 C 视为false
。请注意,在 C/C++ 中,0
isfalse
和一切否则是true
。
因此,if (n = 4)
完全有效并且总是评估为真。当然,在这个过程中,也会涉及到一个任务。
因此,在上面的代码中发生的是
- 整数
n
被赋值为 4 inn = 4
(n=4)
作为表达式返回 true。- 返回 n (4)。
所以答案是4。
推荐阅读
- java - 如何进一步调查内存泄漏
- android - 我应该在 BindAdapter 类中使用注入吗?
- python - 将文件作为附件发送 Django
- tensorflow - 对比损失函数的准确性在训练集上有所提高,但验证准确性变得更差或没有提高
- python - 是否可以在内联代码中使用“with”?
- mongodb - 如何使用 MongoDB-JAVA API 动态关闭模式验证
- sql - 在本地 SQL 服务器和 Azure SQL 服务器之间创建源?
- android - 为 kotlin 扩展函数的基础对象附加上下文
- c# - 如何通过特定属性的最小值获得关系组?
- batch-file - 提取 XML 文件中两个单词之间的文本行