qinuo77 2023-03-19 00:32 采纳率: 100%
浏览 40
已结题

为啥第四个输出的q值是5#include <stdio.h>

函数的值传递不是单项的吗?为啥第四个输出的q值是5

img


#include<stdio.h>
int m=3,p=1,q=8;
void sub(int x,int y)
{
 int p=7;
 printf("%d,%d,%d\n",m,p,q);
 m=x+y;        p=x/y;        
 q=m+p;
printf("%d,%d,%d\n",m,p,q);
}
int main()
{
int m=2;
printf("%d,%d,%d\n",m,p,q);
sub(m,p);
printf("%d,%d,%d\n",m,p,q);
return 0;
}
  • 写回答

3条回答 默认 最新

  • 博客小梦 新星创作者: C/C++技术领域 2023-03-19 11:03
    关注

    因为q是全局变量,其生命周期是整个程序范围,当程序运行结束才销毁,局部变量是出了函数会销毁。因此,对于q的改变是一直保持的,出了sub函数还是保存着之前被修改为5的q

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月20日
  • 已采纳回答 3月20日
  • 创建了问题 3月19日