gpt4 book ai didi

nim-lang - 将 int 类型转换为 uint8

转载 作者:行者123 更新时间:2023-12-05 01:44:53 25 4
gpt4 key购买 nike

Nim Tutorial page状态:

Lossless Automatic type conversion is performed in expressions where different kinds of integer types are used.

所以,我认为在 uint8 的范围内创建一个 int 将允许我将它传递给 proc 期望 uint8

但是,以下代码会引发带注释的错误:

import random

proc show(x: uint8) {.discardable.} = echo x

let a: int = 255
show(a) # type mismatch: got (int) but expected one of proc show(x: uint8)

let b: uint8 = random(256) # type mismatch: got (int) but expected 'uint8'
show(b)

我对第一个感到很困惑,它告诉我它需要一个 proc 而不是一个 int。第二个更清楚,但我预计此时会自动转换,因为 random 生成 uint8 范围内的 int (0..256 ) ( documentation ).

有没有办法将int转换成uint8

最佳答案

random 过程被定义为返回一个int。在此示例中最大值为 256 的事实未在类型系统中编码(如果 random 采用 static[int]作为参数)。

“无损转换”意味着较小的整数类型的值可以转换为较大的整数类型的值(例如,从 int8int32)。在此处的示例中,您正尝试在另一个方向上执行转换。您可以通过显式转换来避免错误:

let a = uint8(rand(256))
show a
# or
let b = rand(256)
show uint32(b)

p.p.您不需要将 discardable pragma 添加到不返回值的过程中。

关于nim-lang - 将 int 类型转换为 uint8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44362956/

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