【问题标题】:How do you subtract from a negative integer but add to a positive?你如何从负整数中减去但添加到正整数?
【发布时间】:2013-06-22 04:57:07
【问题描述】:

真的很简单的问题,虽然我不确定是否有答案。 我正在处理一个可以是正数或负数的整数。

但是,我想根据符号增加或减少它。

比如,如果是“2”,那就加1,变成“3”。

如果是“-2”,则减1,变为“-3”。

我已经知道通过添加 if 语句并具有两个单独的增量和减量部分来解决此问题的明显方法。但是,我正在尝试限制我使用的代码量,并想知道是否有类似的方法可以从内置函数或过程中执行此操作。

【问题讨论】:

  • 请在此处提供您的代码

标签: c# integer increment decrement


【解决方案1】:

您可以为此使用内置的Math.Sign

int a = 1;
int b = a + Math.Sign(a); // b == 2

int c = -1;
int d = c + Math.Sign(c); // d == -2

甚至更短的版本,在 cmets 中建议:

int a = 1;
a += Math.Sign(a); // a == 2

int c = -1;
c += Math.Sign(c); // c == -2

【讨论】:

  • 非常感谢您的帮助,将尝试一下。
  • 请注意,这可以简化为“a += Math.Sign(a);”,它比其他解决方案更短且仍然可读。因此,这可能是最好的选择。
  • @Chris,是的,虽然实际上这取决于您是否需要 inc|dec 相同的变量。
  • 是的,但由于提问者实际上明确表示他们需要增加/减少变量,这似乎是一个相当安全的选择。
【解决方案2】:
using System;

namespace posneg
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = Int32.Parse(args[0]);

            Console.WriteLine(( num + ( num / Math.Abs(num) )));

        }
    }
}

【讨论】:

  • 只需要确保缩进所有代码块(文本编辑器中有一个小的“代码”按钮可以帮助解决这个问题)
  • 作为解释。 Math.Abs​​() 给出任何整数的正值。将整数除以自身总是会得到 1(包括如果它们都是负数)。因此,将负整数除以其正值将得到 -1,如果整数为正,则相同的数学运算将得到 +1。不涉及条件。
  • @ShivamMalhotra 我知道你有一个很好的答案,但我相信你会对这个感兴趣:-)
  • 问题中没有明确列出,但是如果num 为零怎么办?
  • 然后它开始繁荣! :-)(麻烦)
【解决方案3】:

像这样简单地使用三元运算符:-

num >= 0 ? ++num : --num;

【讨论】:

  • 嘿伙计,目的是避免使用任何 if 子句。
  • 正如 OP 所说的那样(添加 if 语句)是已知的,而不是这个问题的答案。
  • 哎呀!如果(正==真)
  • 哈哈哈,典型的编码员视角 ;) +1 更正答案
【解决方案4】:

如果您不想弄乱您的代码,您可以使用Ternary Operators

int number = (original > 0) ? original + 1 : original - 1;

【讨论】:

    【解决方案5】:

    试试看:

    int IncOrDec(int arg)
    {
        return arg >= 0 ? ++arg : --arg;
    }
    

    【讨论】:

    • 完美,马上就用这个!
    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2022-01-09
    相关资源
    最近更新 更多