为什么 PowerShell 中的整数按数字进行比较?

2024-05-20

我的代码告诉你你猜测的数字是高于还是低于随机生成的数字,但它似乎只在其中一个数字低于 10 时才比较数字的前几位。

[int]$GeneratedNum = Get-Random -min 1 -max 101
Write-Debug $GeneratedNum

$isQuitting = $false
Do{
    [int]$Input = Read-Host "Take a guess!"

    If($Input -lt $GeneratedNum){Write-Output "Too Low"}
    If($Input -gt $GeneratedNum){Write-Output "Too High"}
    If($Input -eq $GeneratedNum){Write-Output "Good Job!"; $isQuitting = $true}

} Until($isQuitting -eq $true)

例如,当$GeneratedNum = 56 and $Input = 7,它返回"Too High"


这是因为您正在将字符串与整数进行比较。顺序很重要。

"56" -lt 7

实际上等同于:

"56" -lt "7"

或者:

56 -lt "7"

会给你正确的结果。 PowerShell 尝试将右侧参数强制为左侧的类型。

您可以尝试显式强制转换:

[int]$Input -lt $GeneratedNum
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 PowerShell 中的整数按数字进行比较? 的相关文章

随机推荐