我有一个我在C中无法理解的代码; char c是字符串,应该是随机的, 这里的问题是,26应该是从97开始的值范围,但它很容易理解为整数,但在char的情况下我不知道它应该是什么
char c = (char) rand() % 26 + 97;
答案 0 :(得分:6)
那就是生成一个随机字符。 In ASCII,字母字符从97开始。因此,代码占用97,在0到25之间添加一个0到25之间的随机数,然后将其转换为char
,生成随机字母字符。< / p>
答案 1 :(得分:2)
答案 2 :(得分:1)
通过直接计算ASCII code生成随机字符是一种糟糕的,不可移植的方式。
更好,更便携的方法是将索引随机化为一个字符表。这推动了使用什么代码将每个字符表示到编译器中的责任:
char random_char(void)
{
const char alpha[] = "abcdefghijklmnopqrstuvwxyz";
return alpha[rand() % sizeof alpha];
}
任何体面的编译器都很可能会内联上述内容。
注意使用%
范围限制rand()
的返回值通常不赞成,但这不是重点。