是vc的问题?
13 个解决方案
#1
当然啦,C++才允许在函数的任何地方定义变量
#2
不是吧?函数内部当然可以定义局部变量!而且C也有作用域阿!
#3
VC确实是可能会有问题,但人家就是出错怎么的也给了个话呀
#4
就是说C语言的标准中变量必须在函数或者块的开始部分进行 声明/定义?
以前看的书好像都没有提过啊?在网上也没有看到相关的说明
以前看的书好像都没有提过啊?在网上也没有看到相关的说明
#5
同意alexxing,c确实不能在一个作用域内的执行语句之后再定义变量
#6
没学过c,学习,顺便帮顶
#7
我查了书,c函数确实是要在开始之处申明变量
#8
c语言不能随时定义变量
c++才可以,主要是为了效率的原因
c++定义类对象,必须执行构造函数
如果根本用不到,就会降低执行效率
c++才可以,主要是为了效率的原因
c++定义类对象,必须执行构造函数
如果根本用不到,就会降低执行效率
#9
但是在函数里的独立的块内好像也可以声明变量,在VC中可以编译。不知道是不是符合标准?
我奇怪的是这个原则怎么一直没有听说过呢?
我奇怪的是这个原则怎么一直没有听说过呢?
#10
我也没听说过这个规则!
疑惑中!
疑惑中!
#11
C只允许在语句块的开始位置声明变量,比如:
int main()
{
int i;
i = 0;
{
int j;
j = 0;
}
}
int main()
{
int i;
i = 0;
{
int j;
j = 0;
}
}
#12
纯C语言是这样的,你的文件的扩展名是.C,所以编译器就以C的规则编译~
C++中规定可以从任何地方定义变量.
对于微软的VC++,它并没有严格执行标准的C++规则,比如:
void SomeCppFunction()
{
// Domain 1
...
for(int i = 0; i < 100; i ++)
{
...
}
// Domain 2
... // 对于VC++, i仍然可见.
}
变量i的作用域应该只在循环体中,而不包括Domain2以后的函数体内,所以如果你的程序存在移植方面的问题时就要格外小心~~
#13
to: stukov2002(卡拉是头猪)
这个问题我注意过,调试的时候在
Domain2中i 仍然有值:100
这个问题我注意过,调试的时候在
Domain2中i 仍然有值:100
#1
当然啦,C++才允许在函数的任何地方定义变量
#2
不是吧?函数内部当然可以定义局部变量!而且C也有作用域阿!
#3
VC确实是可能会有问题,但人家就是出错怎么的也给了个话呀
#4
就是说C语言的标准中变量必须在函数或者块的开始部分进行 声明/定义?
以前看的书好像都没有提过啊?在网上也没有看到相关的说明
以前看的书好像都没有提过啊?在网上也没有看到相关的说明
#5
同意alexxing,c确实不能在一个作用域内的执行语句之后再定义变量
#6
没学过c,学习,顺便帮顶
#7
我查了书,c函数确实是要在开始之处申明变量
#8
c语言不能随时定义变量
c++才可以,主要是为了效率的原因
c++定义类对象,必须执行构造函数
如果根本用不到,就会降低执行效率
c++才可以,主要是为了效率的原因
c++定义类对象,必须执行构造函数
如果根本用不到,就会降低执行效率
#9
但是在函数里的独立的块内好像也可以声明变量,在VC中可以编译。不知道是不是符合标准?
我奇怪的是这个原则怎么一直没有听说过呢?
我奇怪的是这个原则怎么一直没有听说过呢?
#10
我也没听说过这个规则!
疑惑中!
疑惑中!
#11
C只允许在语句块的开始位置声明变量,比如:
int main()
{
int i;
i = 0;
{
int j;
j = 0;
}
}
int main()
{
int i;
i = 0;
{
int j;
j = 0;
}
}
#12
纯C语言是这样的,你的文件的扩展名是.C,所以编译器就以C的规则编译~
C++中规定可以从任何地方定义变量.
对于微软的VC++,它并没有严格执行标准的C++规则,比如:
void SomeCppFunction()
{
// Domain 1
...
for(int i = 0; i < 100; i ++)
{
...
}
// Domain 2
... // 对于VC++, i仍然可见.
}
变量i的作用域应该只在循环体中,而不包括Domain2以后的函数体内,所以如果你的程序存在移植方面的问题时就要格外小心~~
#13
to: stukov2002(卡拉是头猪)
这个问题我注意过,调试的时候在
Domain2中i 仍然有值:100
这个问题我注意过,调试的时候在
Domain2中i 仍然有值:100