gpt4 book ai didi

c - 模运算符应用于字符算术时意味着什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:28 25 4
gpt4 key购买 nike

symbol = (rand() % ('~' - ' ' + 1)) + ' ';

我明白每次我运行程序时“符号”都是不同的。但是,为什么我不能使用

symbol = rand();

最佳答案

没有什么叫做字符算术 注意 (AFAIK) 和 modulo operator意味着这是平常的事情。你似乎对整个表达感到困惑。

根据 ASCII table

  • ~ 的十进制值为 126
  • 的十进制值为 32。

rand() 的输出将在 space 范围内取模值,从而产生 printable representation .

分解一下,

  • ('~' - ' ' + 1) == 126-32 +1 == 95
  • (rand() % ('~' - ' ' + 1)) 产生一个 0-94 之间的随机数。
  • (rand() % ('~' - ' ' + 1)) + ' ' 产生32-126之间的随机数,这是可打印范围.

why I can't use symbol = rand();

好吧,该语句没有任何错误,但看起来目的是生成一个可打印 symbol 值。


注意:

引用 C11,章节 §6.4.4.4

An integer character constant is a sequence of one or more multibyte characters enclosed in single-quotes, as in 'x'. [...]

和,

An integer character constant has type int. [...]

所以,它一直都是整数运算。

关于c - 模运算符应用于字符算术时意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42374089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com