gpt4 book ai didi

linux - $(($RANDOM % 10 +1)) 和 $(( ( RANDOM % 10 ) + 1 )) 有什么区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:01 25 4
gpt4 key购买 nike

所以我试图创建一个随机数,限制范围从 1 到 10。两者之间的语法略有不同,我不知道它们之间是否有任何区别。

$(($RANDOM % 10 +1))

我试过了,效果很好。

$(( ( RANDOM % 10 ) + 1 ))。在 RANDOM % 10+1 之间包含一个额外的 () 似乎与上面的代码一样工作。但它只有一个 $ 而不是 2 个。

最佳答案

没有。 %+ 具有更高的优先级(与 * 相同),因此未加括号的版本等同于已显式加括号的版本。


我最初错过了第二个也使用 RANDOM 而不是 $RANDOM。在算术上下文中,字符串被视为标识符,并(递归地)扩展直到获得整数。如果在任何时候字符串不是定义的参数,则使用值 0 代替。例如:

$ foo=bar
$ bar=6
$ echo $((bar))
6
$ echo $((foo))
6

在最后一种情况下,$foo 扩展为 bar,扩展为 6。

IMO,最好使用显式扩展。如果由于拼写错误而未设置参数,您将收到一个显式错误

$ foo=6
$ echo $((10 + $fo))
bash: 10 + : syntax error: operand expected (error token is "+ ")

而不是无意中的无声“成功”

$ echo $((10 + fo))
10 # ?? Why not 16?

关于linux - $(($RANDOM % 10 +1)) 和 $(( ( RANDOM % 10 ) + 1 )) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54676347/

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