小菜鸟问题---整型变量初始化的问题

sunzhiguolu 2010-06-22 12:02:34

int n;
for(int i=0; i<5; i++)
n = i;
Console.Writeline(n);

请好心人帮助我解释两个非常基础的问题:
1.>变量n在for 循环中已经赋值了,为啥在进行输出时告知未被初始化?
2.>变量在使用前必须初始化, 这句话该如何理解?
...全文
165 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
SNSQJH 2012-06-29
  • 打赏
  • 举报
回复
循环内的赋值,编译器不认为是赋值,因为可能循环内部代码没有被执行;

另外一个例子,switch语句,在case中定义变量,编译时就会报错了。
shixiujin 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 angel6709 的回复:]
int n;
for(int i=0; i<5; i++)
n = i;
Console.Writeline(n);

-----》


int n;
for(int i=0; i<5; i++)
{n = i;}
Console.Writeline(n);

n for 循环内部被初始化。
出来for 还是没有初始化的
[/Quote]
此种说法是正确的,但是需要慢慢体会...
QLAN__ 2010-06-22
  • 打赏
  • 举报
回复
int n =10; //赋值
sunzhiguolu 2010-06-22
  • 打赏
  • 举报
回复
n = i不就是初始化吗?
sunzhiguolu 2010-06-22
  • 打赏
  • 举报
回复
n = i之前需要进行初始化吗?
li295611650 2010-06-22
  • 打赏
  • 举报
回复
刚才我没太细看你的题 sorry 现在回答问题


1. 你的 n 刚开始没有赋值 int n 这段 你得给他一个值
2. 你 使 n=i 这就是使用n 这就是调用 所以在调用前必须赋初始值
sunzhiguolu 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 li295611650 的回复:]
int n; // 你这必须给n个初始值 因为你在下面要 n=i 否则 会处错误
for(int i=0; i<5; i++)
n = i;
Console.Writeline(n);

for 赋给的值 不算是初始值


C# 你用的应该是VS VS里运行应该有提示的这个
[/Quote]
没看懂....晕....
li295611650 2010-06-22
  • 打赏
  • 举报
回复
int n; // 你这必须给n个初始值 因为你在下面要 n=i 否则 会处错误
for(int i=0; i<5; i++)
n = i;
Console.Writeline(n);

for 赋给的值 不算是初始值


C# 你用的应该是VS VS里运行应该有提示的这个
sunzhiguolu 2010-06-22
  • 打赏
  • 举报
回复
那为能帮帮忙...
不胜感谢。。。。。。。。。。。。。
sunzhiguolu 2010-06-22
  • 打赏
  • 举报
回复
请问有经验的高手们:
变量初始化需要考虑初始化的范围吗?
比方像1楼高手所说,在for中进行了初始化,但是for结束后n依然没被初始化。
谁能具体解释下。
我太菜鸟了。
宇峰科技 2010-06-22
  • 打赏
  • 举报
回复
int n;
for(int i=0; i<5; i++)
{
n = i;
Console.Writeline(n);
}
sunzhiguolu 2010-06-22
  • 打赏
  • 举报
回复
难道初始化还要区分作用域吗?
宇峰科技 2010-06-22
  • 打赏
  • 举报
回复
int n=0;
for(int i=0; i<5; i++)
{
n = i;
Console.Writeline(n);
}
angel6709 2010-06-22
  • 打赏
  • 举报
回复
int n;
for(int i=0; i<5; i++)
n = i;
Console.Writeline(n);

-----》


int n;
for(int i=0; i<5; i++)
{n = i;}
Console.Writeline(n);

n for 循环内部被初始化。
出来for 还是没有初始化的
sunzhiguolu 2010-06-22
  • 打赏
  • 举报
回复
@14楼:
谢谢了...
结贴送分...
army369168520 2010-06-22
  • 打赏
  • 举报
回复
14L 说的很明白!!!
UP!!
xy325432 2010-06-22
  • 打赏
  • 举报
回复
顶14楼的
a511900703 2010-06-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyazhe 的回复:]
晕。误人子弟。
加上注释先

C# code
//定义变量n
int n;
//循环5次,每次给n赋值为i
for(int i=0; i<5; i++)
n = i;
//循环结束后打印n
Console.WriteLine(n);


从逻辑上,这个没有任何问题,但是编译器并没有那么智能,无法识别for中条件执行次数是否是0次,所以这里的赋值,在编译器是忽略的,而第一……
[/Quote]

帮顶!!!!
zltree 2010-06-22
  • 打赏
  • 举报
回复
14楼 说的挺明白了

编译器也不是想象的那么智能 要是你的for循环不执行呢
比如改成
int n;

//for 循环没执行
for(int i=0; i>5; i++)
{
n = i;
}
//这时候就读不出来 n的值了 所以要进行初始化
Console.Writeline(n);


这样for循环没执行 也就读不出n的值

虽然你写的for循环执行了 但是编译器可不知道.....

jimh 2010-06-22
  • 打赏
  • 举报
回复
同意,
顶 #14楼
加载更多回复(1)

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧