关于未初始化变量ub
  • 板块学术版
  • 楼主wzzzh
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/16 19:19
  • 上次更新2023/11/3 09:28:58
查看原帖
关于未初始化变量ub
125428
wzzzh楼主2023/7/16 19:19

众所周知,当编译包含未初始化变量的程序时,如果加入 -Wall 参数,会显示警告信息(如 main.cpp)。但是当我编译 main_err.cpp 时,编译器没有给出警告信息。请问各位大佬这是什么原因?(代码见下)

main.cpp

#include<cstdio>

int main(){
    int a;
    printf("%d\n",a);
    return 0;
}

main_err.cpp

#include<cstdio>

int main(){
    int a=1;
    int j;
    while(j<=10){
        printf("%d\n",a);
        j++;
    }
    return 0;
}

终端输出

noilinux@noilinux-virtual-machine:~/桌面/WorkSpace$ g++ main.cpp -o main -g -Wall -std=c++14
main.cpp: In function ‘int main()’:
main.cpp:5:11: warning: ‘a’ is used uninitialized in this function [-Wuninitialized]
    5 |     printf("%d\n",a);
      |     ~~~~~~^~~~~~~~~~
noilinux@noilinux-virtual-machine:~/桌面/WorkSpace$ g++ main_err.cpp -o main_err -g -Wall -std=c++14

gcc 版本

gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) 
2023/7/16 19:19
加载中...