在SO的一个问题中,我遇到了下面的定义:
char randchar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" [rand() % 26];
Run Code Online (Sandbox Code Playgroud)
我知道这rand() % 26会给出0到25之间的随机数.但是上面的定义实际上发生了什么?当评估表达式时(编译时或运行时)?堆栈的包含内容是什么.
我们在C中称之为这样的定义.这个特征是什么?
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" [rand() % 26];是一个表达式,用作初始化的randchar.
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"是一个27 char(26个字母和一个空终止符)的数组.rand() 生成一个随机数rand() % 26将其转换为介于0和之间的数字25(包括)char阵列中的被复制到randchar.它原本可以写成:
char const letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int random_number = rand() % 26;
char randchar = letters[random_number];
Run Code Online (Sandbox Code Playgroud)