我正在学习这门课程:关于DataCamp的R介绍和一项练习(性别之战)有一个这样的指令:
阅读编辑器中的代码,然后单击“提交答案”以测试
male
是否大于(>
)female
上面的指令激发了我在RStudio中测试以下代码:
'Male' > 'Female'
令我惊讶的是,R给了我输出TRUE
!我也试过Excel和VBA,两者都想出了输出TRUE
!现在,我开始认为他们是用性别歧视观点编程的语言(开玩笑,呵呵......)。
所以我想知道,这里到底发生了什么?有谁能在这里向我解释一下吗?对于其他编程语言,这也适用于TRUE
吗?为什么?
在其他语言如C#中,你无法比较字符串
"Male" > "Female"
例如,VBA将第一个Letter转换为ASCII,然后进行比较。
MsgBox Asc("male") '= 109
MsgBox Asc("female") '= 102
MsgBox Asc("Male") '= 77
MsgBox Asc("Female") '= 70
这就是为什么它说"male" > "female" is true
。但是"Male" > "female" is false
。
对于其他语言,它将是类似的
在“不太灵活”的编程语言中,您不能使用“>”或“<”运算符来比较字符串。
在“更灵活”的编程语言中,例如VBA,您可以在其中编写:
b = “3”
a = 5 + b
>> a = 8 (implicit conversion of string to number)
...当应用更大或更小的运算符时,您可以通过序数(与ASCII表中的字母关联的数值)来评估字符串。并且由于字母表中的“M”比“F”(具有更高的序数)更高,因此字符串比较会给出结果。
如果你想要它更具女权主义,你可以比较“夫人”(法语女人)和“Hombre”(西班牙语男人):)