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

C语言scanf使用%d/%d格式仅输入1个整数为何输出不确定值?

问题原因

  • 你使用的scanf格式串为%d/%d,要求输入必须匹配「整数/整数」的格式。当你仅输入12时,scanf仅成功匹配到第一个整数,只会给变量x赋值为12,不会对变量y做任何赋值操作。
  • C语言中函数内部定义的局部变量如果没有显式初始化,它的初始值是未定义行为:变量会直接复用对应内存地址中之前遗留的任意数据。你本次运行时y对应的栈内存地址中刚好遗留的值为16,所以输出时就会打印16。这个值是完全不确定的,更换编译环境、甚至同环境多次运行都可能得到不同的结果。

补充建议

  1. 定义局部变量时建议同时初始化,比如修改为int x = 0, y = 0;,此时如果scanf没有给y赋值,y也会保留明确的初始值0,不会出现随机值。
  2. 可以通过scanf的返回值判断输入是否符合预期:scanf会返回成功完成赋值的变量个数,你可以加判断逻辑:
if (scanf("%d/%d", &x, &y) != 2) {
    printf("输入格式错误,请按照 整数/整数 的格式输入");
    return 1;
}
  1. 你当前的代码里return 0后缺少分号,编译时会报错,需要补上改为return 0;。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:36:03