抱歉,这个问题有点儿愚蠢,但我不知道 %% 算法是什么。当我设置a
为 时30 %% 35
,它会设置a
为值 30。但如果我调换数字,它会设置a
为值 5。我就是搞不懂。
@echo off
set /a a=30 %% 35
echo %a%
pause
答案1
%%
是个模量运算符 - 即它用其左参数执行整数除法除以右参数,并返回余。SS64 开启SET
解释所有允许的操作符算术SET
命令。
SET /A ...
正如@IvanMilyakov 在评论中所指出的,如果您直接从命令行执行,而不是在批处理文件中执行,那么您将使用%
而不是%%
;在批处理文件中,您需要将其加倍以防止它被视为变量转义。
答案2
A % B
提示符位于A %% B
批处理中,因为%
符号很特殊,需要在批处理中进行“转义”。对于字符%
,转义字符是另一个%
字符。
正如 Jeff Zeitlin 所说,%
或%%
运算符是模数运算符,它给出 A 除以 B 后的余数,因此35 % 30
得出 5,因为当您将 35 除以 30 时,您会得到答案 1 和余数 5,同样,您也会从 得到 5 65 % 30
,95 % 30
依此类推。如果 B 大于 A,则 的结果A % B
将始终为 A。这就是返回 30 的原因30 % 35
。
您可以set /a
在提示符下尝试操作。尝试一下set /a 8%7
,看看会得到什么。您不需要空格。