值被扭曲

时间:2017-01-17 10:08:53

标签: c#

出于某种原因,当我在这个程序中输出Best时,它会炸掉整数应该是什么。很难理解整数实数是多少!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Safr_Manager
{
    class Program
    {
        static void Main(string[] args)
        {



            var sortarry = new[] {'4', '6', '4', '7', '8', '3'};

            int best = -1;




            for(int i = 0; i < 6; i++)
            {
                var cursel = sortarry[i];
                if (cursel > best)
                {

                    best = cursel;

                }



                Console.WriteLine(cursel);
                Console.WriteLine(best);



            }



        }

    }
}

这就是它的输出。您可以看到它如何改变当前最佳部分应该是什么!

Current selected: 4
Current best: 52
Current selected: 6
Current best: 54
Current selected: 4
Current best: 54
Current selected: 7
Current best: 55
Current selected: 8
Current best: 56
Current selected: 3
Current best: 56

2 个答案:

答案 0 :(得分:9)

在数字周围使用引号,例如。 &#39; 4&#39;告诉c#它是一个char。如果将其隐式转换为int,则使用该char的ASCII代码(例如52)。要使用整数,请按以下方式设置数组:

var sortarry = new[] {4, 6, 4, 7, 8, 3};

答案 1 :(得分:1)

你正在将int与char进行比较。如果你想比较价值,不是一个好主意。 所以将数组更改为int。

using System;

public class Program
{
    public static void Main()
    {
        var sortarry = new[] {4, 6, 4, 7, 8, 3};

            int best = -1;
            for(int i = 0; i < 6; i++)
            {
                var cursel = sortarry[i];
                if (cursel > best)
                {

                    best = cursel;

                }
                Console.WriteLine(cursel);
                Console.WriteLine(best);
            }

    }
}

代码示例:https://dotnetfiddle.net/hjlYjU