批处理文件中的“%%”算法是什么?

批处理文件中的“%%”算法是什么?

抱歉,这个问题有点儿愚蠢,但我不知道 %% 算法是什么。当我设置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 % 3095 % 30依此类推。如果 B 大于 A,则 的结果A % B将始终为 A。这就是返回 30 的原因30 % 35

您可以set /a在提示符下尝试操作。尝试一下set /a 8%7,看看会得到什么。您不需要空格。

相关内容