在C++中如何在一行语句中减少多个变量的值?

3

编辑:我将“在一行内”一词替换为“在单个行语句”(in a single line statement),因为这正是我要寻找的。

假设我们手头有以下变量:

int a = 5;
int b = 9;

有没有一种方法可以压缩这个HTML文档的大小而不会丢失任何内容?

a--;
b--;

如何使用一行语句将多个变量递减? 这个问题不是关于在for循环中递减多个变量, 因为那似乎是一个常见但无关的问题。

2
为什么你需要这样做? - Aziz
2
我希望你不要认为代码越少越好。 - john
2
你可以将这两个语句放在同一行中:a--;b--; - Aziz
1
@Aziz 我只是好奇 :) - Diggi55
1
@Diggi55:我问这个问题的原因是因为这可能会导致代码不易读。尽管这意味着多写几行代码,但保持代码尽可能清晰总是更好的选择。 - Aziz
当你进行逐行调试时,你会很快发现为什么有经验的开发人员讨厌“聪明”的代码:)。^^^其他人说什么就是什么。 - Martin James
5个回答

4
您可能的意思是“在单个语句中”,而不仅仅是“在单行中”。然后您可以使用逗号运算符:
(a--,b--);

是的,我正在寻找一条单行语句...直到现在我都不知道这个词。谢谢 :) - Diggi55

3
// use a template
template<class ... Args>
void decr(Args& ... args){
    (... , --args);
}

decr(a,b,c);

// or, in C++20, auto
void decr(auto& ... args){
    (... , --args);
}

2
您可以将语句写成一行,如下所示:

a--, b--;

(感谢@Aziz使用逗号代替分号进行了改进)


1
同样地,你可以使用逗号来分隔它们:a--,b--; - Aziz

1
你可以这样做:

int a = 5;
int b = 4;
(a -= 1), (b -= 1);
std::cout << a << b;

输出:43


1
你可以尝试像这样写:

你可以尝试像这样写:

#include <iostream>

using namespace std;

    main ()
    {
      int a = 5, b = 9;
      a--, b--;
      cout << a;
      cout << b;        
      return 0;
    }

输出: 48

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接