//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;
答案 0 :(得分:1)
我怀疑问题在于你的数组类型,我会尝试解释它:
由于您的数组类型为char
,因此您存储的是字符,而不是数字,这是正常的。但是,然后你将角色分配给
int ceva = arrayNum[RandIndex];
当您为一个数字指定一个字符时,至少在C中,它不会直接指定数字,而是指定字符编码的十进制表示。
因此,如果您int i = '0'
执行48
,它将分配给- '0'
,这是它的十进制表示。
现在,对于解决方案:
int ceva = arrayNum[RandIndex] - '0'
时,它看起来像'1'
。那将是黑客攻击,对于49 - 48
(unicode),你正在'2'
,50 - 48
= HttpPost
,...