关于C++局部变量初始化问题

浏览:35日期:2023-05-17

问题描述

如果num不给初值,编译的时候可以通过,显示的是warning,但是运行的时候就会出错,显示变量未定义。当变量为全局变量的时候,运行不会报错。这是说C++不会给局部变量赋初值么?还是说最开始可能是一个随机值?环境VS2012程序就是一个输入字符串,求元音字母的个数。

#include <iostream>using namespace std;int main(){ int num = 0; char ch; while(cin >> ch) {switch(ch){case ’a’: case ’A’:case ’e’:case ’E’:case ’i’:case ’I’:case ’o’:case ’O’:case ’u’:case ’U’: num++; break;default: break;} } cout << num;}

关于C++局部变量初始化问题如果点击忽略,然后结果输出的是负的超级大的数。

问题解答

回答1:

使用未初始化的非静态局部变量是未定义行为。

内置类型(built-in type)的非静态局部变量默认是未初始化的,其值是随机的,使用前必须进行初始化。

回答2:

静态int变量自动赋值为0

回答3:

这个报错是VS好心替你加上的

相关文章: