无法理解代码段

时间:2017-08-31 11:57:37

标签: c#

我正在做一些基本的C#练习来学习C#。网站也提供了问题的解决方案,但我无法理解代码。

问题: 编写一个C#程序来检查整数是否在100或200之间。

示例输出: 输入一个整数 25 假

解决方案

public class Exercise22
{
    static void Main(string[] args)
    {
        Console.WriteLine("\nInput an integer:");
        int x = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine(result(x));
    }
    public static bool result(int n) 
    { 
        //Can't understand the code below - 
        //why is the "<=10" and "return false" used 

        if (Math.Abs(n - 100) <= 10 || Math.Abs(n - 200) <= 10)
            return true;
        return false;
    }
}

2 个答案:

答案 0 :(得分:5)

Math.Abs()为您提供参数的绝对值。

如果n介于90和110之间(20左右),则n-100介于-1010之间,因此Math.Abs()将返回010之间的值。

200也是如此。

然而,您可以将其简化为:

return Math.Abs(n-100) <= 10 || Math.Abs(n-200) <= 10;

因此,如果n位于其中一个范围内,则返回true并且函数结束。

否则,该功能会跳过return true并继续return false

答案 1 :(得分:1)

if显然是一个条件,以下语句仅在条件通过时执行。在您的情况下,执行将通过执行return true

离开方法

我认为你认为你需要一个else来表明条件时会发生什么。通常这是对的。但是,在这种特殊情况下,当return false通过时无法到达if - 语句,就像在这种情况下(如前所述),该方法将终止。

所以你也可以写这个,完全相同:

if (Math.Abs(n - 100) <= 10 || Math.Abs(n - 200) <= 10)
    return true;
else
    return false;

总而言之,除了评估return false的条件外,没有其他方式执行false - 语句。