学好编程! 2022-05-02 20:06 采纳率: 96.8%
浏览 27
已结题

输出的结果是什么呢 fun(i++)每次都会+1难道不是一直循环吗,第一次k=5为什么不能用在第二次循环里

#include<stdio.h>

int k=0;
{
void fun(int m)
{

m+=k;k+=m;

printf("m=%d,k=%d " ,m,k++);
}
void main()
{
int i=4;
fun(i++);
printf("i=%d,k=%d\n",i,k);
}

  • 写回答

1条回答 默认 最新

  • A-Chin 2022-05-02 20:38
    关注

    m=4,k=4 i=5,k=5
    初始的 k = 0,i = 4
    先执行fun(i++),这个是先赋值,再自加,即执行完fun函数后,i 再自加
    在fun中,
    m+=k; 这里面m是形参,m += 0 = 4 + 0 = 4;
    k+=m; 这里面m是形参,k += 4 = 0 + 4 = 4;
    printf("m=%d,k=%d " ,m,k++); 中 m=4,k++ 是先赋值再自加,所以输出的是 k=4,然后k的值就变成5了

    该函数执行完之后,i 自加,所以 i=5 (注意,函数中 没有改变 i 的值,但 k 的值改变了,k=5)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 已采纳回答 5月2日
  • 创建了问题 5月2日

悬赏问题

  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了