If statement 如果语句不被视为布尔值?

If statement 如果语句不被视为布尔值?,if-statement,vb6,language-agnostic,pseudocode,If Statement,Vb6,Language Agnostic,Pseudocode,我是一名学生,我的软件老师给了我们这个例子- BEGIN IF first < second THEN display first,second ELSE display second,first ENDIF END 开始 如果第一次

我是一名学生,我的软件老师给了我们这个例子-

BEGIN
IF first < second
    THEN display first,second
ELSE
    display second,first
ENDIF
END
开始
如果第一次<第二次
然后显示第一,第二
其他的
显示第二,第一
恩迪夫
结束
如果两个数字,第一个和第二个是相同的(比如说2,2),那么将采用ELSE路径,因为第一个 然而,我的软件老师说,在某些语言中,两个数字相同会产生问题,并导致错误或奇怪的行为(我相信他引用了VisualBasic作为例子)。我看不出这怎么可能。IF语句的计算结果为true或false,因此必须运行其中一个选项,并且在计算2是否小于2时应该没有问题

虽然他是我的老师,我尊重他,但我并不完全信任他,他有时也会犯错。他说的对吗?如果是的话,我能举一些具体的例子来说明发生了什么吗?
谢谢。

据我所知,
if(expression)
中的
表达式总是计算为布尔值。至少在C、C++、PHP、java、.NET、Python、JavaScript……/P>中都是这样。
但在一些古老或使用较少的语言中,情况可能并非如此

对于VisualBasic,明确表示
number
将计算为
FALSE

也许他(以一种迂回的方式)在谈论浮点不精确性

评估2是否小于2应该没有问题

对于使用不精确表示法存储的某些数字,情况并非总是如此,例如:

Dim first As Double, second As Double

 first = 0.3
second = 0.1 + 0.2

If first < second Then
    Debug.Print first, "is less than", second
Else
    Debug.Print "equal or greater"
End If

很明显,如果a是整数(不是小数),a让我给你一个c语言的例子。C编译器对浮点使用IEEE-754数字表示

取a=0.1273(存储在内存中为:0.1272999423027039)

取b=0.12和c=0.0073+b

现在,如果您选中,c
的确

给他看一个VB的例子,或者其他一些易于访问的语言,比如javascriptI,我想不起来听过一种语言,如果if为false,ELSE不能保证。甚至VisualBasic。我想请他举个例子就好了他有没有提到短路评估?VisualBasic在默认情况下不这样做,而且它可能来自C风格的语言,这是非常出乎意料的。你能给我介绍一下这个吗@AntonGogolevSee好吧,我不认为这是一件平常的事。非常感谢。
> 9007199254740992 == 9007199254740993
< true