【发布时间】:2022-01-21 02:18:50
【问题描述】:
我的代码是:
#include<iostream>
using namespace std;
int main()
{
int arr[5] = {6,7,3,61,9};
int *p = arr;
int a,b,c = *p, *(p+1), *(p+2);
// int a,b,c ;
// a = *p;
// b = *(p+1);
// c = *(p+2);
return 0;
}
这向我抛出了一个错误:“错误:在 '+' 标记之前是预期的 ')'”。 当我尝试运行注释代码时,没有错误。 谁能解释一下为什么会出现错误。
【问题讨论】:
-
"谁能解释一下为什么会出现错误。"因为语言标准不允许您为您所想的目的编写这样的代码。真的,我不确定您希望如何回答这个问题。语言就是这样。如果您想知道“如何在同一行初始化多个变量?”,那么您应该问这个问题。
-
auto [a,b,c] = std::make_tuple(*p, *(p+1), *(p+2)); -
int a,b,c = *p, *(p+1), *(p+2);:这类似于在 Lua 中初始化多个变量的方式:local a,b,c = 42, "Hello", "world!"。但是 C++ 有不同的语法... -
std::tie是你忘记的。