为了账号安全,请及时绑定邮箱和手机立即绑定

C# 变量已使用但从未赋值

C# 变量已使用但从未赋值

C#
一只萌萌小番薯 2022-06-19 16:49:35
所以我一直在研究一个程序,它计算输入的数字的最接近和更大的 3 次方(如果输入的数字是 20,那么结果是 27,因为 3^3=27)。但是由于我缺乏技能,我偶然发现了一个问题。似乎使用了变量 result 但从未分配过(即使它的值在 for 循环中分配给它)这是代码:namespace ConsoleApp6{class Program{    static void Main(string[] args)    {        Console.Write("Enter a number: ");        int num = Convert.ToInt32(Console.ReadLine());        int result;        for(int i = num; (i * i * i) >= 0; i--)        {            result = i * i * i;        }        Console.WriteLine("Nest 3rd pow. is: " + result);        Console.WriteLine("Press any key to contiunue...");        Console.ReadLine();    } }}
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

评论可能已经解决了您的问题(您在创建它时没有设置值result,编译器可以预见没有循环运行并且永远没有任何赋值的场景,但您总是使用它。“使用未分配局部变量”错误),但我想指出您的程序距离解决广告中的问题还有一段距离,即找到比输入数字更大的 int 立方体

为了解决这个问题,将输入的数字立方根,将其四舍五入到下一个整数并将其立方

Math.Pow(Math.Ceiling(Math.Pow(num, 1.0/3.0)), 3.0);

就目前的情况而言,我不确定您要通过循环实现什么目标,并且看起来它将运行多次将结果设置为 0(它循环直到 i 为零,结果为 0) . 也许您打算从 2 开始 i 并递增 i 直到结果大于 num,但这似乎比直接执行 calc 效率低


查看完整回答
反对 回复 2022-06-19
?
RISEBY

TA贡献1856条经验 获得超5个赞

良好编程实践的一个总体规则是在声明中初始化一个变量。

编译器错误表示您在result未分配时正在使用它。那是因为在您的情况下,for loop您无法预测它会至少迭代一次(因此在某些情况下,变量在没有被分配的情况下被使用)。

如前所述,这可以通过初始化变量来解决(0 是标准)

int result = 0;


查看完整回答
反对 回复 2022-06-19
  • 2 回答
  • 0 关注
  • 362 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号