我正在尝试从数组中随机获取一个数字,所以,我这样做了:
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");
但是不是从数组中给我一个数字,而是打印任何其他负值。
此外,对于短于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(签名)char
。
signed 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};