给定字符的大小是多少?

时间:2014-05-28 13:48:48

标签: c

我有一个我在C中无法理解的代码; char c是字符串,应该是随机的, 这里的问题是,26应该是从97开始的值范围,但它很容易理解为整数,但在char的情况下我不知道它应该是什么

char c = (char) rand() % 26 + 97;

3 个答案:

答案 0 :(得分:6)

那就是生成一个随机字符。 In ASCII,字母字符从97开始。因此,代码占用97,在0到25之间添加一个0到25之间的随机数,然后将其转换为char,生成随机字母字符。< / p>

答案 1 :(得分:2)

97 = ascii'a'

它会在'a''z'之间生成一个随机字符。

参考:ASCII values

答案 2 :(得分:1)

通过直接计算ASCII code生成随机字符是一种糟糕的,不可移植的方式。

更好,更便携的方法是将索引随机化为一个字符表。这推动了使用什么代码将每个字符表示到编译器中的责任:

char random_char(void)
{
  const char alpha[] = "abcdefghijklmnopqrstuvwxyz";

  return alpha[rand() % sizeof alpha];
}

任何体面的编译器都很可能会内联上述内容。

注意使用%范围限制rand()的返回值通常不赞成,但这不是重点。