c - 这将是什么输出?

标签 c

我在做这道题,我有一个疑问。

#include <stdio.h>
int main(void)
{
    int fun (int);
    int i=3;
    fun(i=fun(fun(i)));
    printf("%d\n",i);
    return 0;
}

int fun ( int i )
{
    i++;
    return(i);
}

我怀疑什么时候可以

fun ( i = 5 )

这会发生什么? i 的值是 6 还是 5。 根据我的说法,应该是 6。但这不是正确答案。

最佳答案

在C语言中,参数是按值传递的。ma​​in函数中的变量i其实和里面的i是不一样的fun(),因为它的值在传递给函数时被复制了。

当您调用 i = fun(fun(i)) 时,5 被赋值给 main 函数中的 i。但是,返回 6 的 fun(5) 调用不会将其结果分配回 i,保持不变。打印输出时,i 仍然是 5。

关于c - 这将是什么输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24726824/

相关文章:

c - 从本应作为 init 进程运行的 C 程序关闭 Linux

c - 如何从函数外部访问变量

c - 学生成绩练习不起作用

c++ - 与 CMake 链接的 C/C++ 库

谁能解释并跟踪以下多重递归 C 程序?

c - IAR Expression 预期表达式

c - 在 C 中设置最低有效位

c - Makefile 执行错误命令

c - GNU 代码风格的 GNU 缩进问题

c - 段。打印字符时出错