如何在单行语句中递减 C++ 中的多个变量?
How to decrement several variables in C++in a single line statement?
编辑:我用 'in a single line statement' 替换了短语 'in one line' 因为这是我要找的
假设我们手头有以下变量:
int a = 5;
int b = 9;
有没有办法压缩这个...
a--;
b--;
... 变成单行语句??
问题不在于在 for 循环中递减多个变量,
因为这似乎是一个常见但无关的问题。
你可以这样做:
int a = 5;
int b = 4;
(a -= 1), (b -= 1);
std::cout << a << b;
输出:43
您可以将语句写在一行中,如下所示:
a--, b--;
(感谢@Aziz 改进了逗号而不是分号)
您可能指的是 "in a single statement",而不仅仅是 "in a single line"。
然后你可以使用逗号运算符:
(a--,b--);
您可以尝试类似的方法:
#include <iostream>
using namespace std;
main ()
{
int a = 5, b = 9;
a--, b--;
cout << a;
cout << b;
return 0;
}
输出:
48
// 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);
}
编辑:我用 'in a single line statement' 替换了短语 'in one line' 因为这是我要找的
假设我们手头有以下变量:
int a = 5;
int b = 9;
有没有办法压缩这个...
a--;
b--;
... 变成单行语句?? 问题不在于在 for 循环中递减多个变量, 因为这似乎是一个常见但无关的问题。
你可以这样做:
int a = 5;
int b = 4;
(a -= 1), (b -= 1);
std::cout << a << b;
输出:43
您可以将语句写在一行中,如下所示:
a--, b--;
(感谢@Aziz 改进了逗号而不是分号)
您可能指的是 "in a single statement",而不仅仅是 "in a single line"。 然后你可以使用逗号运算符:
(a--,b--);
您可以尝试类似的方法:
#include <iostream>
using namespace std;
main ()
{
int a = 5, b = 9;
a--, b--;
cout << a;
cout << b;
return 0;
}
输出: 48
// 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);
}