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

如何在Visual Studio中执行含未初始化变量的代码以打印垃圾值?

如何在Visual Studio中运行含未初始化变量的代码以观察垃圾值?

你提到想通过未初始化变量打印垃圾值,但Visual Studio运行时没有“忽略并执行”的选项——这是因为VS默认开启了严格的安全检查机制,会主动拦截这类可能导致未定义行为的代码。下面是几个能让你顺利运行这段代码的方法:

方法1:全局关闭项目的SDL安全检查

这是最直接的方式,操作步骤如下:

  • 右键你的项目(不是整个解决方案),选择「属性」
  • 依次进入「配置属性」->「C/C++」->「常规」
  • 找到「SDL检查」选项,将其修改为「否」
  • 也可以额外进入「配置属性」->「C/C++」->「代码生成」,把「安全检查」设置为「禁用安全检查(/GS-)」
    修改完成后点击「确定」,重新编译运行就能看到未初始化变量的垃圾值输出了。

方法2:仅针对特定代码禁用警告

如果你不想全局关闭安全检查,只想让这段测试代码通过编译运行,可以在触发警告的代码前添加编译指令,屏蔽未初始化变量的特定警告:

#include <stdio.h>
void scopes();
void localvar();

// 禁用未初始化局部变量的警告(C4700)
#pragma warning(disable: C4700)

int main(void) {
    localvar();
    return 0;
}
void localvar() {
    int m;
    int n = 10;
    printf("%d %d\n", m, n);
    for (m = 0; m < 3; m++) {
        auto int sum = 0;
        sum = m;
        printf("%d %d\n", m, sum);
    }
    return;
}

这样编译时只会屏蔽这段代码的C4700警告,项目中其他代码依然会受到安全检查的保护。

小提示:从C语言标准来说,未初始化局部变量的行为属于未定义行为,Visual Studio的安全检查其实是在帮你规避潜在的程序崩溃或异常问题,只是你为了学习观察垃圾值才需要临时关闭这些检查哦。

内容的提问来源于stack exchange,提问作者송효근

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:43:15