c#简单计算代码

c#简单计算代码,c#,C#,有人能帮我查一下c代码吗。我想计算新的a值-该值的计算方式为:a=a-2*b,然后查看结果是否小于0,是否在(0,a)范围内。我通常只需几个步骤就可以做到这一点,但我在互联网上发现了一个代码,它看起来比我的代码要好得多,并且代码解决的问题的解释与我的类似,但我不确定代码是否以正确的方式编写,因为它没有给我正确的结果。此外,代码中没有报告错误 a = a - 2 * b < 0 ? 0 : a; a=a-2*b

有人能帮我查一下c代码吗。我想计算新的a值-该值的计算方式为:a=a-2*b,然后查看结果是否小于0,是否在(0,a)范围内。我通常只需几个步骤就可以做到这一点,但我在互联网上发现了一个代码,它看起来比我的代码要好得多,并且代码解决的问题的解释与我的类似,但我不确定代码是否以正确的方式编写,因为它没有给我正确的结果。此外,代码中没有报告错误

 a = a - 2 * b < 0 ? 0 : a;
a=a-2*b<0?0:a;
代码是否适合我需要的东西?

您的代码是:

int a;

if((a - 2 * b) < 0)
{
    a = 0;
}
else
{
    a = a;
}
a=a-2*b<0?0:a;
这是一个快捷方式:

if (a - 2  * b < 0) {
  a = 0;
} else {
  // a = a is a no-op.
}
if(a-2*b<0){
a=0;
}否则{
//a=a是不可操作的。
}
这似乎与你的解释不符

我怀疑你想要:

var oldA = a;
a = a - 2*b;
if (a < 0) {
  // do something
} else if (a < oldA) {
  // do something else.
}
var oldA=a;
a=a-2*b;
if(a<0){
//做点什么
}否则如果(a
您发布的代码可以这样写,也许这有助于澄清问题:

        if (a - 2*b < 0)
        {
            a = 0;
        }
        else
        {
            //this assignment is not needed it is just here for clarification
            a = a;
        }
if(a-2*b<0)
{
a=0;
}
其他的
{
//本作业不需要,仅用于澄清
a=a;
}
顺便说一句,我想说的是,代码的紧凑程度并不重要,最重要的是它对您和其他人来说有多容易阅读。所以,如果你能更好地阅读if-else语句,那么就使用它们


哦,好吧,2慢;)

您可能还想使用
开关
语句:

int newA = a - 2*b;
byte option = newA < 0 ? 0 : newA < A? 1 : 2;

switch(option)
{
  case 0 : // your code for NewA < 0  break;
  case 1 : // your code for NewA < A  break;
  case 2 : // your code for NewA > A  break;
}
int newA=a-2*b;
字节选项=newA<0?0:newA休息;
}

您要计算的是
(a-2)*b
还是
a-(2*b)
?因为默认运算符优先级将导致先进行乘法,然后进行减法运算。另外,您的代码是什么样子的?如果
a-2*b
小于0,我想首先将多个2*b代码集
a=0
。如果不是,它将其设置为a的值我在网上找到的原始代码是angle=angle-2*angle1注意
a=Math.Max(0,a-2*b)在我看来更清楚了。非常感谢,现在我明白了为什么它不能给我好的结果:)谢谢你的详细解释。谢谢你的解释。我现在明白问题出在哪里了。我不同意你说的“代码的紧凑程度并不重要”——只有当代码被集中在一起时才是这样。但是,如果你能在一行代码中完成一些事情,并且这段代码相当容易阅读,那么这总比在5行代码中完成要好。这非常重要。错误代码的一个例子是嵌套的“if”语句,当您只需要一个“if”或一系列LINQ查询时,如.Where(条件).Where(条件2)。。。当你可以做的时候。Where(条件&&condition2)。保持代码整洁!重要的是,它很容易阅读,不仅对你来说,对其他人来说也是如此。通常,如果我们以一种更简洁的方式编写代码,就像我们在本主题中介绍的那样,那么对每个人来说,尤其是对初学者来说,阅读起来并不容易。那么初学者为什么要使用它呢?如果你的团队中的所有人都熟悉这一点,那很好,除非有其他人不熟悉。
        if (a - 2*b < 0)
        {
            a = 0;
        }
        else
        {
            //this assignment is not needed it is just here for clarification
            a = a;
        }
int newA = a - 2*b;
byte option = newA < 0 ? 0 : newA < A? 1 : 2;

switch(option)
{
  case 0 : // your code for NewA < 0  break;
  case 1 : // your code for NewA < A  break;
  case 2 : // your code for NewA > A  break;
}