C# 如何从一个负整数减去一个正整数?

C# 如何从一个负整数减去一个正整数?,c#,integer,increment,decrement,C#,Integer,Increment,Decrement,这个问题真的很简单,虽然我不确定是否有答案。 我正在处理一个整数,它可以是正的,也可以是负的 然而,我想增加或减少它取决于标志 例如,如果是“2”,则添加1并使其成为“3” 如果是“-2”,那么减去1,使之成为“-3” 我已经知道通过添加if语句和两个单独的递增和递减部分来解决这个问题的明显方法。但是,我试图限制我使用的代码量,并想知道是否有类似的方法可以从内置函数或过程中执行此操作。简单地使用如下三元运算符:- num >= 0 ? ++num : --num; 试试看: int In

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

然而,我想增加或减少它取决于标志

例如,如果是“2”,则添加1并使其成为“3”

如果是“-2”,那么减去1,使之成为“-3”


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

简单地使用如下三元运算符:-

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

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

如果你不想把你的代码弄乱,你可以用它

您可以为此使用内置的:

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

int c = -1;
int d = c + Math.Sign(c); // d == -2
或者更简短的版本,在评论中建议:

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

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

请在此提供您的代码嘿,伙计,目的是避免使用任何if子句。因为OP声明这种方式(添加if语句)是已知的,而不是这个问题的答案。Eeek!如果(正==真)哈哈哈,典型的编码者的视角;)+请注意,这可以简化为“a+=数学符号(a);”,它比其他解决方案短,并且仍然可读。因此,这可能是最好的选择。@Chris,没错,尽管实际上这取决于是否需要对同一个变量进行inc | dec。是的,但由于提问者实际上明确表示需要对变量进行incr/dec,这似乎是一个相当安全的赌注。只需确保缩进所有代码块(有一点“代码”)按钮来帮助)作为解释。Abs()给出任意整数的正值。将一个整数除以它本身将始终得到1(包括如果它们都是负数)。所以将一个负整数除以它的正值将得到-1,如果这个整数是正的,同样的数学将得到+1。没有任何条件。@ShivamMalhotra我知道你有一个很好的答案,但我相信你会对这个答案感兴趣:-)问题中没有明确说明,但是如果
num
为零呢?然后它会爆炸!:-)(麻烦)太好了,我现在就用这个!
int a = 1;
a += Math.Sign(a); // a == 2

int c = -1;
c += Math.Sign(c); // c == -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) )));

        }
    }
}