为什么字符串比较返回-1,即使两个字符串相同?

时间:2015-11-25 16:47:24

标签: string tcl

我在字符串比较中得到-1而不是0 我使用了以下代码

set s1 "sekhar" 
set s2 "sekhar"
puts [string compare s1 s2]

1 个答案:

答案 0 :(得分:1)

当你这样做时:

string compare s1 s2

您正在比较字符串文字 s1s2。由于s1根据规则较小(基本上与具有增强功能的C strcmp()函数相同),因此结果为-1

要将字符串与这些名称进行比较,您需要 来读取变量,然后再将它们输入string compare。你可以通过在名称前添加$(在Tcl中表示“立即读取此变量”)来执行此操作:

string compare $s1 $s2

在内部,Tcl通过引用传递值,并将对索引的变量访问减少到可以在其中的局部变量表(即,在过程中)。实际上,这个操作实际上非常快。