gpt4 book ai didi

c# - 文字和隐式缩小转换

转载 作者:行者123 更新时间:2023-11-30 21:22:36 26 4
gpt4 key购买 nike

a) 由于数字 100 是 int 类型的文字并且编译器不允许隐式缩小转换,因此以下赋值是否会导致错误?

byte b = 100; 


b) 如果编译器不提示从 int literaltype byte 的隐式缩小转换,那么为什么它也不允许从 < em>double literal 到 type float (我知道我们可以通过使用 F/f 后缀指定 float literal 来避免这个错误)?

byte b=16; //OK
float f1=16.9; //error


谢谢

最佳答案

C# 语言规范的第 6.1.8 节对此进行了介绍。如果值在目标类型的范围内,则将 int 类型的常量表达式转换为 sbyte、byte、short、ushort、uint 或 ulong 是合法的。 C# 编译器很容易确定该值是否在适当的范围内并因此允许转换。

至于 double case,C# lang spec 并没有明确指出为什么不允许这样做。我的猜测是它与确定 double 值是否适合浮点值的困难有关。获得正确的浮点精度是一项非常困难的任务,而且可能如此之多,以至于人们认为不值得付出代价(如果可能的话)

关于c# - 文字和隐式缩小转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217894/

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