所以我有一个目前有两个对象的数组。运行时,显示为“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];
任何帮助都会有很大帮助!
答案 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"