Char Array中的随机数

时间:2013-12-27 20:22:02

标签: c++ c arrays random

我正在尝试从数组中随机获取一个数字,所以,我这样做了:

srand(time(NULL));
const char numbers[19] ={506001, 506002, 506003, 506004, 506005, 506006, 506007, 506008, 506009, 506010, 506011, 506012, 506013, 506014, 506015, 506016, 506017, 506018, 506019};
printf("%i",(int)numbers[rand() % 19]);
printf("\n");

但是不是从数组中给我一个数字,而是打印任何其他负值。 Output

此外,对于短于3位的数字,它工作正常,当我使用3位或更多位数字时,问题就开始了。 我做得不好?

3 个答案:

答案 0 :(得分:3)

更改

const char numbers[19] ...

const long numbers[19] ...

char是1个字节(8 bits at least for most modern machines)。你的号码对于一个字母而言太大了 long的大小(看起来你有一个Windows系统)至少是32位。

答案 1 :(得分:1)

你有const char numbers[19],即。 19 const(签名)charsigned char只能保存-128+127的值,其他任何数字都不可能。 使用const int numbers[19]

答案 2 :(得分:0)

您将整数放入字符数组中。你可能想要:

const long numbers[19] ={506001, 506002, 506003, 506004, 506005, 506006, 506007, 506008, 506009, 506010, 506011, 506012, 506013, 506014, 506015, 506016, 506017, 506018, 506019};