【问题标题】:In computers in general, are number caclulations treated like string when comparing?一般来说,在计算机中,比较时数字计算是否像字符串一样对待?
【发布时间】:2013-10-27 04:17:08
【问题描述】:

如果我有int myInt1 = 02int myInt2 = 2,一般来说,它们是像字符串一样比较,所以myInt1 == myInt2 返回false,还是计算机会像你在纸上做数学那样比较它并返回true?

【问题讨论】:

    标签: int compare calculator string-comparison


    【解决方案1】:

    这将完全取决于所讨论的计算机语言,并且(在前缀 0 的特定情况下,如此处所示)取决于 n 的特定值——至少就 n 和 @987654323 而言@ 是一样的。

    也就是说,对于绝大多数编程语言来说,数字的处理方式与字符串的处理方式截然不同,如果有多种方式来表达整数“二”的概念,它们通常都是等价的。这并不是说22.0 是相同的:在许多语言中它们完全不同。

    【讨论】:

      【解决方案2】:

      这取决于语言的语法和语义是如何定义的。

      您尚未指定您所谈论的语言,但在大多数现代语言中,数值用于比较。所以你通常希望在你的例子中得到true

      【讨论】:

        【解决方案3】:

        正如其他人所评论的,这完全取决于上下文和语言。它还取决于数据类型(int, float, double,某些语言还有其他的,例如 DecimalNSNumber 等)。

        Objective-C中,如果你比较两个NSNumbers和==,它通常会返回false,因为NSNumber是一个对象,在这种情况下,与==比较内存地址,所以它通常会返回false

        但是对于int?在大多数情况下,即使您有一行代码显示int myNum = 002;,该语言也可能不关心前导零。前导零可能只是格式化输出的问题。例如,printf("%03d",myNum)printf("%d",myNum)

        【讨论】:

        • 好吧,小心点。前导零表示类 C 语言中的八进制整数。 02 是 2,但 010 是 8!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多