c++中什么叫使用了未初始化的局部变量y?
using namespace std;
int main()
{
int x,y,z,i;
i=0;
for(x=1;y<20;x++)
for(y=1;y<94;y++)
for(z=1;z<48;z++)
{if(x*5+y*1+z*2==100)
i++;
}
cout<<i<<endl;
} 展开
明显i和y都是局部变量,i初始值是0,但是y就是没有初始化的局部变量。
例如:
int main{int i = 0;
int y;
for(; i < y;i++){
//..........
}
}
扩展资料:
C++中被初始化全局变量在编译时保存在data段中,而没有被初始化的全局变量保存在bss段中。这样保存的理由是在data段的变量在编译生成的文件中需要分配空间存储变量值,
而没有初始化保存变量(或初始化为0的静态变量、全局变量)其默认值为0,没必要将这些值均为0的变量存储在data段中,而采用bss段只是给未初始化的全局变量和局部静态变量预留位置,bss段并没有内容。
但是在程序执行时这些变量会占用内存空间,所以可执行文件必须记录bss段中变量占用空间的大小。
当局部变量未初始化,且在第一次赋值前引用了该变量值,那么就会报使用了未初始化的局部变量这样一个警告或者错误。
该程序中x,y,z,i均为局部变量,“i=0”首先对i变量进行了初始化,即赋值为0。接下来“for(x=1;y<20;x++)”,未对y进行初始化,赋值,就首次引用该变量,这种错误就叫做“使用了未初始化的局部变量”。
正确改法应该在i=0的时候同样对y进行初始化赋值。
扩展资料:
赋值语句用来表明赋给某一个变量一个具体的确定值的语句叫做赋值语句。在算法语句中,赋值语句是最基本的语句。
在表述一个算法时,经常要引入变量,并赋给该变量一个值。
赋值运算符右侧的值由表达式生成,而表达式则由文本、常数、变量、属性、数组元素、其他表达式或函数调用的任意组合所构成。下面的示例阐释这一点。
VisualBasic
x=y+z+findResult
前面的示例将变量y中存储的值与变量z中存储的值相加,然后与调用函数findResult返回的值相加。然后,此表达式的总值将存储到变量x中。赋值语句的一般格式是:变量名=表达式 其中"="为赋值号
常见的赋值语句有以下几种形式:
(1)a = 3;{赋予变量常数值}
(2)b = a + 1;{将含有其它变量的表达式赋予变量}
(3)N = N...
参考资料:百度百科-赋值语句
int main{
int i = 0;
int y;
for(; i < y;i++){
//..........
}
}
明显i和y都是局部变量,i初始值是0,但是y就是没有初始化的局部变量。
for(x=1;y<20;x++)//y参与计算(比较)
改成:
for(x=1;x<20;x++)//手误型:)
int x,y=10,z,i;//…误型:)