前言:
如今同学们对“c语言中delay如何定义”都比较关心,姐妹们都想要知道一些“c语言中delay如何定义”的相关内容。那么小编同时在网络上汇集了一些对于“c语言中delay如何定义””的相关文章,希望各位老铁们能喜欢,朋友们一起来了解一下吧!四,什么时候使用延迟变量?如何使用?
什么时候使用延迟变量?如何使用?这些一直是使新手困惑的地方,那到底是怎么样的呢?那请看下面的例子,我们将一步步引导大家。
例1,
@echo off
set /a num=0
for /l %%i in (1 1 3) do (
Rem ================================
set /a num =1
Rem 原意是变量num的值每次都加1
Rem ================================
echo %num%
)
pause>nul
先猜猜看,运行之后的结果是什么呢?你是不是认为它会显示:1 2 3 呢?我想大部分人会这么认为。你再将以上代码保存为批处理文件,运行,看看结果。
你会看到,显示的结果并不是意料中的 1 2 3 而是 0 0 0,这个是为什么呢?
原来这个是因为,批处理在处理for 或者if 语句中的变量时,先要进行预处理,把其中的用%%括起来的变量,先替换为语句之前的变量(如上面的代码,for语句中的%num%早就被替换为语句前的 值:0),所以,for语句运行时,虽然已经给变量加了1,但是,值却不变(因为echo %num%中的%num%早已被替换为:0了)。
那么,要实现(for或者if)语句中的变量实时的变化(如这里,我就要将1 2 3 显示出来)要怎么办呢?那就要起用延迟变量,先在批处理中申明:setlocal enabledelayedexpansion 然后,将语句:echo %num%改成!num!(也就是将“%”改成“!”),这样就可以达到效果了,演示代码:
例2,
@echo off
Rem ''''///////下面先申明起用延迟变量/////////////
setlocal enabledelayedexpansion
set /a num=0
for /l %%i in (1 1 3) do (
Rem ================================
set /a num =1
Rem 变量num的值每次都加1
Rem ================================
Rem '''''''//////////////////下面的变量不能再用"%"括起来,而应该用"!"////////////
echo !num!
)
pause>nul
归纳总结:
1、为什么要用延迟变量?
让if语句和for语句中的变量实时变化;
2、什么时候用延迟变量?
一般是用在 for 语句和 if 语句中;
3、怎么用延迟变量?
先在批处理中申明起用延迟变量:setlocal enabledelayedexpansion
然后将 for 语句、if语句中的变量用两个"!"括起来即可
4、其实在使用变量嵌套变量也可以使用变量延迟的。
例3,
@echo off
set a=1
set b1=10
echo %b%a%%
pause
执行显示,得到 %b1%
其实我想得到的是 赋予b1的值,即 10 那么如何实现呢?将上例修改如下,
例4,
@echo off
set a=1&set b1=10
call,echo %%b%a%%%
pause>nul
call 这里实际是对命令行进行重新组织扩展,先扩展%%b%a%%%里面的%a%,使%a%变成a的值1,再用cal来扩展%b1%。
也可以用变量延迟来实现,方法如下:
例5,
@echo off
set /a a=1,b1=10
Setlocal EnableDelayedExpansion
echo:!b%a%! ...
pause
call 在这里的用法实际是变量延迟的一种快捷方式,变量延迟一般用在for的循环体里面。
call,%%b%a%%% 这里的逗号实际是一个分隔符,和空格一样,还有很多分隔符可用,比如上例中的 echo:!b%a%! ,当然并不是所有的命令都可以这样用,看情况而定……
例6,
@echo off&setlocal enabledelayedexpansion
set a=1000
set b=dd
set a%b%=9000
set c=!a%b%!
echo %c%
pause
执行一下,看看显示的将是什么?为什么是这样?相信通过例4,例5你也能分析得出来吧?
标签: #c语言中delay如何定义