"compares less than 0"是什么意思?

What does "compares less than 0" mean?

本文关键字:意思 是什么 than compares less      更新时间:2023-10-16

上下文

当我阅读一致的比较时,我注意到动词的特殊用法来比较

有一个新的三向比较操作员,< =>。表达式A< => b 如果A<返回比较< 0的对象;b,如果a> b进行比较> 0,并且 比较== 0如果a和b相等/等效。

在互联网上找到的另一个示例(重点是我的):

它返回一个值比较故障时比较零的值。否则, 返回的值可以用作以后呼叫的第一个参数 得到。

最后一个示例,在github(重点矿山)中发现:

//进行圆形16位比较。
//如果两个数字之间的距离大于32767,则
//数字大于32768,减去65536
//因此,65535 比较小于0 ,但大于65534
//这可以正确处理65535-> 0缠绕盒子

当然,对于经验丰富的程序员而言,含义很明显。但是,这些示例中使用的动词在任何标准化的英语形式中都不是标准的。

问题*

  • 编程术语句子"对象比较少于零"如何翻译成纯英语
  • 这是否意味着如果对象与0进行比较,则结果将"小于零"?
  • 为什么说"对象小于零",而不是"对象比较 少于零"?

*我寻求英语学习者和英语语言&用法。

"比较< 0" plash English的"比较小于零"。

我相信这是一个常见的速记。

因此,将其应用于整个句子给出:

表达式a< => b返回比较小于零的对象 如果A小于B,则如果A大于A,则比较大于零 b,如果a和b相等/等效,则等于零。

这是一件嘴。我明白了为什么作者会选择使用符号。

我更加感兴趣的是"比较< 0"的等效表达。"比较< 0"平均值"评估为负数"?

首先,我们需要了解您引用的标准和实际措辞之间的区别。您引用的只是说明实际上将其放入标准中的解释。

语言功能operator<=>中P0515中的标准措辞是它返回5种可能的类型之一。这些类型由p0768中的 library 措辞定义。

这些类型不是整数。甚至枚举。它们是类型。这意味着他们完全具有库为其定义的操作。图书馆的措辞非常具体:

使用未指定类型的匿名参数指定了比较类型类型的关系和平等朋友函数。这种类型应通过实现选择,以便这些参数可以接受文字0 作为相应的参数。[示例:nullptr_t满足此要求。 - 在这种情况下,终点示例],提供不同文字0以外的参数的程序的行为是未定义的。

因此,Herb的文本直接转化为标准措辞:比较小于0 。不再,也没有。不是"负数";这是一种值类型,其中唯一可以做的就是将其比较为零。

重要的是要注意草药的描述性文本"比较少于0"将转化为实际的标准文本。P0515中的标准文本清楚地表明,1 <=> 2的结果是strong_order::less。P0768中的标准文本告诉我们strong_order::less < 0是正确的。

,但它还告诉我们所有其他比较都是描述性短语"比较小于0"的功能等效的。

例如,如果-1"比较少于0",则也意味着它不等于零。并且它不比较大于0。这也意味着0不比较小于-1。等等。

P0768告诉我们,strong_order::less与文字0之间的关系适合"比较小于0"单词的所有含义。

"a比较小于零"表示a < 0是正确的。

" a比较== 0表示a == 0是正确的。

我敢肯定现在有意义的其他表达式

是的,"对象比较少于0"表示object < 0将产生true。同样,compares equal to 0表示object == 0将产生true,而compares greater than 0表示object > 0将产生true。

关于他为什么不使用"小于0"一词的原因,我想强调这是所有的保证。例如,这本质上可能是任何任意类型,包括并非真正代表实际值的类型,而仅支持与0的比较。

例如,让我们考虑类型的类型:

class comparison_result {
    enum { LT, GT, EQ } res; 
    friend template <class Integer>
    bool operator<(comparison_result c, Integer) { return c.res == LT; }
    friend template <class Integer>
    bool operator<(Integer, comparison_result c) { return c.res == GT; }
    // and similarly for `>` and `==`
};

[目前,让我们假设friend template<...>的内容都是合法的 - 我认为您有基本的想法)。

这根本没有真正代表一个值。它仅表示"如果与0相比,则结果应小于,等于或大于或大于"。因此,不是 小于0,只是它与0相比,它会产生 truefalse(但与其他值相比,产生相同的结果)。

<0是否为true表示>0==0必须为false(反之亦然):对操作员本身的返回类型没有这种限制。该语言甚至不包括指定或执行此类要求的方法。规格中没有什么可以防止它们返回的true。为所有比较返回true是可能的,并且似乎允许,但可能很牵强。

为所有这些返回false是完全合理的 - 例如,与浮点NAN的所有和所有比较通常都应返回false。NAN的意思是"不是数字",而不是一个数字的东西不小于大于一个数字。两者是无与伦比的,因此在每种情况下,答案都是(完全正确的)false。

我认为到目前为止的其他答案主要回答了什么操作的结果是,现在应该清楚。@VTT的答案最好解释,IMO。

但是,到目前为止,没有人回答其背后的英语。"对象比较小于零。"根本不是标准英语,充其量是术语或lang语。这使得非本地演讲者更加混乱。

等效的是:
使用&lt; 0(小于零)的对象的比较总是返回true。

这很漫长,所以我可以理解为什么创建了"快捷方式":
该对象比较小于零。

这意味着表达式将返回可以将可以与&lt; 0或> 0或== 0进行比较的对象。

如果A和B是整数,则表达式评估为负值(可能-1),如果A小于B。

如果a == b

,表达式评估为0

,如果a大于b。

,则表达式将评估为正值(可能1)