2014-01-29 31 views
1

我正在嘗試使用負數,但顯然我正在做一些愚蠢的事情。 附件中的腳本將始終顯示:批量 - 如果語句和負值

testA = 15 
testB = -15 

testA GTR 0 
testA GEQ 0 

testB GTR 0 
testB GEQ 0 

到現在爲止我的印象是-15是< = 0 什麼我做錯了下?

批處理腳本:

@echo off 

set /a testA = 15 
set /a testB = -15 

echo testA = %testA% 
echo testB = %testB% 
echo(

if %testA% GTR "0" echo testA GTR 0 
if %testA% GEQ "0" echo testA GEQ 0 
if %testA% LEQ "0" echo testA LEQ 0 
if %testA% LSS "0" echo testA LSS 0 
echo(

if %testB% GTR "0" echo testB GTR 0 
if %testB% GEQ "0" echo testB GEQ 0 
if %testB% LEQ "0" echo testB LEQ 0 
if %testB% LSS "0" echo testB LSS 0 
echo(

pause 

回答

4

你確實是正確的。數學BODS協會沒有頒佈任何最近改變管轄整數序列的規律,所以你的問題必須在別的地方:-)

事實上,它是在你的0"引號引起此問題。擺脫他們。當你這樣做,你得到的,而更合理的輸出:

testA = 15 
testB = -15 

testA GTR 0 
testA GEQ 0 

testB LEQ 0 
testB LSS 0 

的原因,你的"0"情況下不能正常工作,如果因爲gtr和關聯的運營商實際上是比較,而不是數字的。他們爲NUMERICS工作的原因是幫助中深埋了if聲明:

這些比較都是通用的。因爲如果string1和string2都是由數字組成的,那麼字符串轉換爲數字並執行數字比較。

由於"可以以任何方式被認爲是一個「數字位」,執行的比較是一個,並且在ASCII,"(代碼點爲0x22)是基於字符串的小於任何數字(0x30至0x39)或-符號(0x2d)在testB的情況下。

+0

+1對於第一段! ';-)' – Aacini

+0

@Aacini,我會拿這張票,我並不自豪。我希望得到有用答案的選票,但是,如果我讓他們獲得幽默感,那也不錯:-) – paxdiablo

+0

非常感謝!我可以發誓,我嘗試過,沒有引號。那麼,回到批處理學校... – TestDummy42