123_456_789 的类型是啥?

Posted

技术标签:

【中文标题】123_456_789 的类型是啥?【英文标题】:What is type of 123_456_789?123_456_789 的类型是什么? 【发布时间】:2016-02-25 07:04:03 【问题描述】:

我在 Swift 示例中看到像 123_456_789 这样的值,带有下划线的数字。这些值默认是什么类型的?

这是否取决于我分配给它们的变量的类型?它们对我来说看起来很有趣而且很新,所以我想知道,如果它们像它们一样被抛出,而不定义类型,它们会被如何处理?

【问题讨论】:

【参考方案1】:

来自文档 (Swift 编程语言 -> 语言指南 -> 基础 ->Numeric Literals):

数字文字可以包含额外的格式,使它们更容易 读。整数和浮点数都可以用额外的零填充,并且可以 包含下划线以帮助提高可读性。两种类型都不 格式会影响文字的基础值:

let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1

所以您的123_456_789 是一个整数文字,与123456789 相同。 您可以在任何需要的地方插入下划线,而不仅仅是作为 “千位分隔符”,例如1_2_3_4_5_6_7_8_91_23_4567_89,如果您喜欢编写混淆代码。

【讨论】:

我是否可以忘记任何潜在的不一致并在我的操作中将它们视为不带下划线的整数,在我觉得方便的地方使用下划线? @SergeiBasharov:我不明白你的问题。 123_456_789 和 123456789 是同一个整数。你甚至可以把它写成 1_2_3_4_5_6_7_8_9 :) 我的意思是,如果我发现对大数使用下划线更方便,我可以在所有可能的情况下使用它们并将值视为常规整数? @SergeiBasharov:您可以在任何地方插入下划线。它不会更改整数常量。编译器将 123456789 和 1_2_3_4_5_6_7_8_9 视为相同的整数文字。 感谢您的澄清!【参考方案2】:

123_456_789 是“整数文字”,就像 123456789 一样。“整数文字”是与 Int 或 Int32 或 Int8 或其他任何东西分开的类型。可以将“整数文字”分配给任何整数类型(例如,与只能分配给 Int 的 Int 值不同)。

如果您问“我可以将它们视为整数吗”,那是没有意义的。这是一种不同的类型。对于每种类型,都有如何使用它的规则。 Int 和“整数文字”的规则是不同的。

【讨论】:

以上是关于123_456_789 的类型是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose deleteMany 在 nodejs 上使用 _id

Perl语言入门

c:\>123.txt 456.txt 789 cmd.exe 程序中拷贝的问题

python set

python set

1-11Set结构