【问题标题】:What is COUT doing with these integers?COUT 对这些整数做了什么?
【发布时间】:2014-04-25 20:06:20
【问题描述】:

我正在使用 cplusplus.com 和 Mike McGrath 的 C++ Programming In Easy Steps 来完成一个毕生的目标,那就是做你们一直在做的事情。

我正在理解和学习,但我遇到了一个我似乎无法回答的问题,这很可能是因为我的提问方式。

在书中,我们有一个例子

#include <iostream>
using namespace std ;

int main()
{
  float nums[3] ; // Declared then initialized.
  nums[0] = 1.5 ; nums[1] = 2.75 ; nums[2] = 3.25 ;

  // Declared and initialized.
  char name[5] = { 'm', 'i', 'k', 'e', '\0' } ;
  int coords[2] [3] = { { 1, 2, 3 } , { 4, 5, 6 } } ;

  cout << "nums[0]: " << nums[0] << endl ;
  cout << "nums[1]: " << nums[1] << endl ;
  cout << "nums[2]: " << nums[2] << endl ;
  cout << "name[0]: " << name[0] << endl ;
  cout << "Text string: " << name << endl ;
  cout << "coords[0][2]: " << coords[0][2] << endl ;
  cout << "coords[1][2]: " << coords[1][2] << endl ;

  return 0 ;
}

现在,我了解了这里使用的所有代码,但我不明白最后两个 couts 是如何工作的。因此,如果我理解正确,我们在这里所做的就是将 coords(坐标)定义为 int coords[2] [3] = { { 1, 2, 3 } , { 4, 5, 6 } } ;。正确的。现在我们正在从中输出数据,对吧?好的,所以我们说 [0][2],如果加上,它将等于 5。但是 3 是输出。

所以我的第一个假设是cout 必须改为将两个整数相乘。但是在第二个中,我们看到 1 和 2 分别是 2 和 3,当它们相乘时,它们等于 6。到目前为止,一切都很好。但是,我发现,如果我将 6 更改为 9,则输出为 ... 9。那么,这里发生了什么? COUT 在这里做什么?

【问题讨论】:

  • int coords[2] [3] 是 2 行 3 列。所以 coords[0][2] 是第一行第三列,因为索引从 0 开始
  • 那些是矩阵的索引,所以你只是索引来获取你想要的元素。祝你一生目标好运:)

标签: c++ variables integer


【解决方案1】:

它不是相加,也不是相乘——它是索引。你有一个二维数组,0 行的元素2 包含数字3

【讨论】:

  • 简洁,正是我所需要的。非常感谢。
【解决方案2】:

您为什么认为cout 与算术运算有关?它没有。它只是输出值。对于coords[0][2],这是第一个 (0+1) 数组中的第三个 (2+1) 元素。是 3。

注意这一点:

int x = coords[0][2];
cout << x << endl;

它会打印同样的东西。

顺便说一句,我希望您意识到 std::vectorstd::string 是 C++ 中首选的工具,而不是数组。

【讨论】:

  • 我试图了解两件事的呼唤是什么。我从错误的角度看它。我很抱歉。
  • 没有必要为提问而道歉!
【解决方案3】:
int coords[2] [3] = { { 1, 2, 3 } , { 4, 5, 6 } } ;

定义一个多维数组,很像一个 2 行 3 列的矩阵。

cout << "coords[0][2]: " << coords[0][2] << endl ;

上面一行是打印第一行和第三列中的值[C/C++ 是基于零索引的语言]

【讨论】:

    【解决方案4】:

    首先,cout 没有对数字做任何事情,只是将它们显示为字符串。

    其次,[*] 不会更改数字。相反,它指的是数组中的一个位置。例如,char k = name[2]; 查看数组name 中的第二个字符,等效于char k = *(name + 2);。对于二维数组,int value = coords[2][1] 指的是coords 第一层的第一个元素。这相当于int value = *(coords + ((2 * WIDTH) + 1));。一个 3 维数组跟随趋势,其中float x = cubemap[8][11][3]; 将等同于float x = *(cubemap + (((8 * (WIDTH * HEIGHT)) + (11 * WIDTH)) + 3));。这些都不会影响数组中的实际值,而是这些索引号正是指定位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-17
      • 2014-02-27
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多