我正在编写一个小程序,但我对if else语句有疑问。
@echo off
set /p points=
echo %points%
echo 1x5=
set /p 15=
if %15%==5 (
echo well done!
set /a points=%points%+1
) else ( echo wrong! )
pause
echo %points%
pause
即使我填写了错误的答案,它仍然会向我的观点发出1点广告并说“#34;做得好!"
(顺便说一句:在输入代码方面遇到了一些问题,如果你能阅读代码,现在就不用了)
答案 0 :(得分:3)
在调用批处理文件时,如果参数包含在命令行中,则会从代码%1
,%2
,...引用第一个,第二个...参数。
在您的代码中,当您编写if %15%==5 ...
时,%15%
被解释为批处理文件(%1
)的第一个参数,后跟5和非转义的非配对百分号,即解析器丢弃。因此,如果批处理文件没有输入参数且%1
为空,则if代码将执行为if 5==5 ...
作为一般推荐,批处理文件中的变量"应该"永远不要以数字开头,因为它们将被视为输入参数。
答案 1 :(得分:0)
@echo off
setlocal enableDelayedExpansion
set /p points=
echo %points%
echo 1x5=
set /p 15=
if !15!==5 (
echo well done!
set /a points=!points!+1
) else ( echo wrong! )
pause
echo !points!
endlocal
pause
MC MD解释了为什么你的代码不起作用。这是一种让它成功的方法。