VC++里面的局部变量不会消失???

来源:百度知道 编辑:UC知道 时间:2024/06/07 09:48:23
先看这个:
http://zhidao.baidu.com/question/45607500.html

这里面说:
vc++不是完全标准的c++编译器,例如:下面代码

{
int m=1;
}
按照标准c++的语法,当花括号结束时,局部变量m会消失,但是在VC++中,m不会消失。

可是我用过N种C++编译器(目前在用VC++),就从来都没出现过什么局部变量不消失的情况。。。VC++和别的C++编译器相比的区别也就在于多加了很多window相关的头文件,UI视窗操作系统和一些别的代码(比如头文件里直接使用#pragma once而不是原来的#ifndef __XXX__)吧。。。其实我感觉VC++应该算是一个增加其他功能过的C++编辑器。。。

到底他说的对不对啊?局部变量真的不会消失吗?

说得不对,VC++里面,上述例子中,局部变量会消失的
把下面的代码敲进VC++里面
#include<iostream>
using namespace std;
int main()
{
{
int m=1;
}
cout<<m<<endl;
return 0;
}
然后编译,会出现“'m' : undeclared identifier”的错误,此时m这个变量已经超过作用域,已经消失,所以执行m的输出时则出现m未定义的错误了。

m应该消失的
你后面对VC的理解没什么问题

。。外行问题,你能看到并不代表它可以被使用,局部变量是可以在局部使用,谁告诉你局部变量使用完就马上被析构的,不能当函数讲