You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于C语言extern存储类:main中是否存在两个同名变量x?

问题解答

不存在两个名为x的变量,整个程序中只有一个全局变量x,所有对x的操作都是针对这个全局变量的。以下是代码的执行流程拆解:

  1. 全局变量int x;默认初始化为0。
  2. 进入main函数,执行x++,此时全局变量x的值从0变为1。
  3. 调用g()函数:
    • g()中没有定义局部变量x,直接操作全局变量x,执行++x后,x的值从1变为2。
    • 打印x的值,输出2。
  4. 回到main函数,执行printf("%d",x),此时全局变量x的值已经是2,所以再次输出2。
  5. 最终程序输出为22,和你给出的结果一致。

另外补充:f()函数中用extern int x;声明的x,同样是引用这个全局变量,并非新的变量。

内容的提问来源于stack exchange,提问作者Rajat Chakraborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:14:51