奇怪的表达

din*_*in2 19 c

我在我学习的游戏中找到了这行代码

int charaCode = arc4random() % (126-'!'+1)+'!';
Run Code Online (Sandbox Code Playgroud)

我知道arc4random是什么,但表达式对我来说很奇怪.

是什么目的

(126-'!'+1)+'!'
Run Code Online (Sandbox Code Playgroud)

它总是评估为127.

glg*_*lgl 32

您解释错误:%运算符的优先级高于+.

所以,实际上,你有:

int charaCode = (arc4random() % (126-'!'+1))+'!';
Run Code Online (Sandbox Code Playgroud)

它将功能结果剪辑到0..93并将其移动以使其开始'!'.

所以,你所得到的有效范围是33..126(这是所有可见的ASCII字符从范围!~).

  • 是的,有效范围是`33..126`(`!`..`~`),而不是`32..125`. (3认同)
  • 重要的是要注意该范围包含所有可见的ascii字符的值. (2认同)