加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

以下定义实际上在做什么?

发布时间:2020-12-16 10:11:07 所属栏目:百科 来源:网络整理
导读:在SO的一个问题中,我遇到了下面的定义: char randchar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" [rand() % 26]; 我知道rand()%26会给出0到25之间的随机数. 但是在上面的定义中实际发生了什么?当评估表达式时(编译时或运行时)?堆栈的包含内容是什么. 我们在C中称
在SO的一个问题中,我遇到了下面的定义:

char randchar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" [rand() % 26];

我知道rand()%26会给出0到25之间的随机数.
但是在上面的定义中实际发生了什么?当评估表达式时(编译时或运行时)?堆栈的包含内容是什么.

我们在C中称之为这样的定义.这个特征是什么?

解决方法

“ABCDEFGHIJKLMNOPQRSTUVWXYZ”[rand()%26];是一个表达式,用作randchar的初始化.

>“ABCDEFGHIJKLMNOPQRSTUVWXYZ”是一个包含27个字符(26个字母和一个空终止符)的数组.
>方括号是数组索引运算符.
> rand()生成一个随机数
> rand()%26将其转换为0到25之间的数字(含)
>该结果用作数组索引.
>数组中的char被复制到randchar.

它原本可以写成:

char const letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int random_number = rand() % 26;

char randchar = letters[random_number];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读