【问题标题】:I am assigning three variables at a same time but code is throwing me an error [closed]我同时分配三个变量,但代码给我一个错误[关闭]
【发布时间】: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 是你忘记的。

标签: c++ arrays pointers


【解决方案1】:

这不是在 C++ 中声明和初始化多个变量的正确语法。如果你真的想让它们都在一条线上,那就是

int a = *p, b = *(p + 1), c = *(p + 2);

但是很多人会建议只使用三个单独的行:

int a = *p;
int b = *(p + 1);
int c = *(p + 2);

【讨论】:

  • 但很多人会建议只使用三个单独的行当然,算我一个。
猜你喜欢
  • 2022-08-09
  • 1970-01-01
  • 2021-01-08
  • 2016-02-14
  • 1970-01-01
  • 2015-03-21
  • 2020-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多