笨笨孩子 2022-06-21 12:06 采纳率: 72.5%
浏览 19
已结题

c语言动态变量相关问题

#include<stdio.h>
char n = 65;
void f(){
static char a = 'A';
char b = 'B';
a+=2, b+=5, n+=3;
printf("%c\t%c\t%c\n", a,b,n);
}
void main(){
char a = 'A', b = 'B';
printf("%c\t%c\t%c\n", a,b,n);
f();
printf("%c\t%c\t%c\n", a,b,n);
}
答案:
A B A
C G D
A B D
为什么这个程序的结果是这个 第二句特别不明白

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-06-21 12:22
    关注

    这就是考察局部变量,全局变量和静态变量的
    n是全局变量,第一次输出是65,即字符A,调用f()后,由于n+=3,所以n变为字符D,最后printf并没有改变n,所以还是D
    main中的a和b并没有传递给函数f,所以和f中的a和b没啥关系。因此两句printf输出的都是main中的a和b,始终是字符A和字符B
    f函数中的printf语句,输出的是f函数中的变量a和b,和main中的没关系。由于f函数只调用了一次,所以变量a定义成静态没有什么作用。a和b分别加上2和5后,自然就是字符C和字符G了

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

报告相同问题?

问题事件

  • 系统已结题 6月29日
  • 已采纳回答 6月21日
  • 创建了问题 6月21日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集