c ++为什么不指数时打印所有元素

2 c++ arrays algorithm vector std

我想创建一个数组并向该数组中的每个元素引发2并将其存储为新数组arr2.这是我的代码

#include <iostream>

using namespace std;

int main(){
  int arr1[7] = {1, 2, 3, 4, 5, 6, 7};

  auto arr2 = 2 ** arr1;

  cout << arr2 << endl;
}
Run Code Online (Sandbox Code Playgroud)

但是,它只打印第一个元素,它不打印整个数组.为什么?所以,基本上,我在这里做的是用元素{1,2,3,4,5,6,7}创建arr1然后我想要arr2是

  • [2,4,8,16,32,64,128]

但由于某种原因,它只打印数组的第一个元素,它打印2,但我希望它打印所有元素.请注意,这2 ** arr1是我将2提升到电源的行(使用取幂运算符,我认为如果我没有错,就是你如何调用它)然后它应该将数组存储在array2中.

有什么问题,为什么它只打印第一个元素而不是所有元素?

Bat*_*eba 7

**不是一个求幂运算符.C++不是Fortran.

你的第一个元素乘以2 arr:你的陈述相当于int arr2 = 2 * arr1[0];.你输入的是完全合法的C++(由乘法和指针取消引用组成),并且使用auto正在添加到混淆中.

  • 这应该加入由` - >`"运营商"拥有的专属俱乐部. (3认同)
  • @StoryTeller:还有"转换为bool"操作符:`!!` (2认同)