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

同一行声明多个整型变量仅初始化一个,输出异常的原因是什么?

问题原因解析

你的代码出现异常是因为对C语言变量声明初始化的规则理解有误:

  • 语句int num1, num2, num3 = 9;仅对num3完成了初始化赋值(值为9),num1和num2只是被声明为整型变量,并没有被初始化。
  • 在C语言中,函数内部的局部自动变量(非static修饰)会占用栈内存空间,这些空间里残留着之前程序运行留下的随机数据。未初始化的这类变量值是不确定的,打印它们会得到随机垃圾值(比如你看到的0和13637000,每次运行结果可能都不同),这属于C语言里的未定义行为。

你误以为逗号分隔的变量会被批量赋值为9,但C语言语法不支持这种写法。如果要让三个变量都初始化为9,正确写法有两种:

写法一:声明时逐个初始化

#include<stdio.h>

int main(){
     int num1 = 9, num2 = 9, num3 = 9;

     printf("%d ", num1);
     printf("%d ", num2);
     printf("%d ", num3);
}

写法二:先声明变量再统一赋值

#include<stdio.h>

int main(){
     int num1, num2, num3;
     num1 = num2 = num3 = 9;

     printf("%d ", num1);
     printf("%d ", num2);
     printf("%d ", num3);
}

内容的提问来源于stack exchange,提问作者Samit Raina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:42:07