纳闷,《C#入门经典》 第52页 关于 if 语句的一个问题。

677 2006-05-27 05:05:12
WROX系列 由康博同志翻译的《C#入门经典》 第52页

using System;

class test
{
static void Main()
{
string 比较;
Console.WriteLine("请输入一个数字:");
double a=Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请再输入一个数字:");
double b=Convert.ToDouble(Console.ReadLine());

if(a<b)
比较="小于";
if(a==b)
比较="等于";
if(a>b)
比较="大于";

Console.WriteLine("第一个数字{0} {1} 第二个数字{2}.",a,比较,b);
}

}

调试的错误提示为:使用了未赋值的局部变量“比较”

把if部分换为:

if(a<b)
比较="小于";
else
{
if(a=b)
比较="等于";
else
比较="大于";
}
Console.WriteLine("第一个数字{0} {1} 第二个数字{2}.",a,比较,b);

就可以了。

请问是印刷错误吗?
...全文
164 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ProjectDD 2006-05-28
  • 打赏
  • 举报
回复
错误提示这么明显,你加一点

string 比较;
比较=string.Empty;
...
就可以了.
amandag 2006-05-27
  • 打赏
  • 举报
回复
局部变量必须赋初值

所以开始就写string 比较="";是最好的

编译器并不知道,你实际上覆盖了所有分支的情况,即你所写的三个if如果都不发生的话(编译器看不出这三个if的逻辑关系),字符串变量 比较 就没有值了,自然就有可能输出出错,所以编译器及时地纠正了这个问题

后面更改过的代码使用的是if...else结构,换而言之,必须要发生其中的一段,这样便一起就不认为字符串变量 比较 没有值,所以是对的
Colin-Han 2006-05-27
  • 打赏
  • 举报
回复
看起来应该是翻译的问题,这里应该是编译器(而不是运行时)会给出一个编译警告(而不是错误).
因为,编译器认为你的程序中使用了未附值的变量,可能是你的笔误引起的.因此给出这个警告信息.忽略警告信息,程序还是可以运行,只是可能掩盖了错误.

而第二种写法,编译器认为所有的分支路径都已经给这个变量附过值了,因此,这个警告也就相应的没有了.
BlueMountain_1980 2006-05-27
  • 打赏
  • 举报
回复
string 比较="";
或者是
string 比较=string.Empty;
677 2006-05-27
  • 打赏
  • 举报
回复
依然纳闷
cic_wxf 2006-05-27
  • 打赏
  • 举报
回复
string 比较="";
diandian82 2006-05-27
  • 打赏
  • 举报
回复
你上面的写法包含了所有的分支都可以给 “比较” 值
diandian82 2006-05-27
  • 打赏
  • 举报
回复
if(a<b)
比较="小于";
if(a==b)
比较="等于";
if(a>b)
比较="大于";
=================================================

这样写,编译器是识别不出来a,b的关系到底是什么,不知道上面的比较是否含盖了所有的可能,它认为也许还有别的可能使得 “比较” 这个变量无法符值。
写成下面的应该就没问题了

if(a<b)
比较="小于";
else if(a==b)
比较="等于";
else
比较="大于";
MaybeHelios 2006-05-27
  • 打赏
  • 举报
回复
是不是编译器这样认为的:
如果:

if(a<b)
比较="小于";
if(a==b)
比较="等于";
if(a>b)
比较="大于";


都不满足呢?比较就没赋值了吧

另外;
if(a=b)
就可以了吗?

请问是印刷错误吗?
呵呵
hsmserver 2006-05-27
  • 打赏
  • 举报
回复
没错,最好加{}

110,571

社区成员

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

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

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