cout不会在数组中显示对象

时间:2017-08-09 17:29:39

标签: c++ arrays

所以我有一个目前有两个对象的数组。运行时,显示为“0”。

#include "stdafx.h"
#include <process.h>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;

int lBlock = rand() % 99 + 10;
int rBlock = lBlock + 1;
string randBlock[15] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
string blocks[2] = {("0x", lBlock, randBlock[rand() % 14], "0"), ("0x", lBlock, randBlock[rand() % 14], "0")};
cout << blocks[1];

任何帮助都会有很大帮助!

1 个答案:

答案 0 :(得分:5)

("0x", lBlock, randBlock[rand() % 14], "0")

此表达式调用comma (,) operator三次。

  

在逗号表达式E1, E2中,表达式E1被评估,其结果被丢弃......并且在评估表达式E2之前,其副作用已完成。

     

逗号表达式结果的类型,值和值类别正是第二个操作数E2的类型,值和值类别。

换句话说,(a, b) == b,假设:

  • b == b
  • 表达式a不会导致任何可能导致b != b的副作用。

因此,上述表达式相当于"0"(除了调用rand()的副作用外)。 std::cout正确显示此值。

看起来你可能意味着这样:

std::string("0x") + std::to_string(lBlock) + randBlock[rand() % 14] + "0"