比较问题 string 与 int
有人可以向我解释一下为什么这些比较会这样进行吗?我的一个脚本中有一个错误,我花了一点时间才解决。我正在使用 read-host 并输入一个数字。它将它存储为字符串。
Write-Host "(`'2`' -gt 9 ) = " ('2' -gt 9 )
Write-Host "(2 -gt 9 ) = " (2 -gt 9 )
Write-Host "(`'2`' -gt 10 ) = " ('2' -gt 10 )
如果将字符串与 Int 进行比较,它是否使用 Ascii 值?如果是这样,为什么第一个显示 $false,它应该是 $true。
那么当你将 int 改为 10 时,它会变成 $true 吗?
Can someone explain to me why these comparisons work they way the do. I had a bug in one of my scripts that took me a little bit to work through. I was using read-host and typing a number. It was storing it as a string.
Write-Host "(`'2`' -gt 9 ) = " ('2' -gt 9 )
Write-Host "(2 -gt 9 ) = " (2 -gt 9 )
Write-Host "(`'2`' -gt 10 ) = " ('2' -gt 10 )
If you are comparing a string to an Int does it use the Ascii value? If so why does the first one show $false, it should be $true.
Then how is it when you change the int to 10 it becomes $true.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
比较时,右值将转换为左值的类型。因此,
'2' -gt 9
变为'2' -gt '9'
,即 False,而'2' -gt 10
变为'2' -gt '10'
,即 True。On comparison a right value is converted to the type of a left value. Thus,
'2' -gt 9
becomes'2' -gt '9'
, that is False, and'2' -gt 10
becomes'2' -gt '10'
, that is True.