2 回答
TA贡献1794条经验 获得超8个赞
Go 编程语言规范
特定规则适用于数值类型之间的(非常量)转换。
数字类型之间的转换
对于非常量数值的转换,适用以下规则:
整数类型之间转换时,如果值为有符号整数,则符号扩展为隐式无限精度;否则它是零扩展。然后将其截断以适应结果类型的大小。例如,如果 v := uint16(0x10F0),则 uint32(int8(v)) == 0xFFFFFFF0。转换总是产生一个有效值;没有溢出的迹象。
将浮点数转换为整数时,分数将被丢弃(向零截断)。
将整数或浮点数转换为浮点类型,或将复数转换为另一种复杂类型时,结果值将四舍五入到目标类型指定的精度。例如,float32 类型的变量 x 的值可以使用超出 IEEE-754 32 位数字精度的额外精度进行存储,但 float32(x) 表示将 x 的值四舍五入到 32 位精度的结果。类似地,x + 0.1 可能使用超过 32 位的精度,但 float32(x + 0.1) 不会。
在所有涉及浮点或复数值的非常量转换中,如果结果类型不能表示转换成功但结果值依赖于实现的值。
在 Go 中,您可以将整数类型转换为浮点类型。因此,没有理由不原谅。
在计算中,健壮性原则是软件的通用设计指南:
做事要保守,从别人那里接受的要自由(通常被改写为“发送的要保守,接受的要自由”)。
该原理也称为 Postel 定律,以互联网先驱 Jon Postel 的名字命名,他在传输控制协议的早期规范中写道:1
TCP 实现应该遵循健壮性的一般原则: > 做事要保守,从别人那里接受的要自由。
换句话说,向其他机器(或同一台机器上的其他程序)发送命令或数据的代码应该完全符合规范,但接收输入的代码应该接受不符合规范的输入,只要含义明确即可。
TA贡献2012条经验 获得超12个赞
Scanf 扫描从标准输入读取的文本,将连续的空格分隔值存储到由格式确定的连续参数中。它返回成功扫描的项目数。
Scanf 返回它读取的内容数。在这种情况下 n == 1 因为...您输入了一个标记,后跟一个换行符。据推测,您想要的是 的值input
,而不是n
。
- 2 回答
- 0 关注
- 206 浏览
添加回答
举报