与数组和字符串的麻烦

时间:2018-01-09 09:41:15

标签: c++ arrays string

//libraries
#include <iostream>
#include <stdlib.h>
using namespace std;

int main(){

  srand ( time(NULL) ); //initialize the random seed


  const char arrayNum[4] = {'5', '6', '7', '8'};
  int RandIndex = rand() % 4; //generates a random number between 0 and
  cout << arrayNum[RandIndex];
  int ceva = arrayNum[RandIndex] ;

  if (ceva == 6){

    cout << "hey";

  }

  else{

    cout << "nu";

  }

}

代码仅显示&#34; nu&#34;并且它无法正常工作。 如果arrayNum[RandIndex]等于6则显示&#34;嘿&#34; if else show&#34; nu&#34;

1 个答案:

答案 0 :(得分:1)

我怀疑问题在于你的数组类型,我会尝试解释它:

由于您的数组类型为char,因此您存储的是字符,而不是数字,这是正常的。但是,然后你将角色分配给

中的int
int ceva = arrayNum[RandIndex];

当您为一个数字指定一个字符时,至少在C中,它不会直接指定数字,而是指定字符编码的十进制表示。

因此,如果您int i = '0'执行48,它将分配给- '0',这是它的十进制表示。

现在,对于解决方案:

  1. 简单易行的&#39;方法应该是将数组更改为数字,而不是字符,或更改if以便与字符进行比较。
  2. 如果由于某种原因你无法做到1.,在将字符分配到数字int ceva = arrayNum[RandIndex] - '0'时,它看起来像'1'。那将是黑客攻击,对于49 - 48(unicode),你正在'2'50 - 48 = HttpPost,...