中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个很弱的问题: 运算输出问题?
作者:
标题: 一个很弱的问题: 运算输出问题? 上一主题 | 下一主题
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『楼 主』:  一个很弱的问题: 运算输出问题?

在我的批文件中,

set a=234
set /a d=a/3600
set /a f=a%3600
echo %d%
echo %f%

pause

我的没有正确的输出

全部是0

何故阿?

但是改成这样的话
set a=234
set /a d=a%/3600
set /a f=a%%3600
echo %d%
echo %f%

pause

他就正确输出了


我也就此说明一个问题,我前次发的一些代码中,又出现
set /a **=xx%/YY
set /a **=xx%%ZZ

的地方,有朋友说不对,那么是不是我的机器的问题?

但是我更早的时候,使用的是
set /a **=xx/YY
......

都是正确的,只是近来,他就不理我了,输出尽是0。
更多的时候,她提示说:
运算符不存在

请高手解释和解决,谢谢了!


─────────────────── 版务记录 ────────────────────
执行:namejm
原标题:一个很弱的问题
修改后标题:一个很弱的问题: 运算输出问题?
说明:因修改后的标题仍然过于模糊,不便于论坛的搜索和管理,请在三日内修改标题。
处罚:因该用户在论坛里并非新人,理应对本论坛的发帖规定有所了解,故扣除该用户发帖所得
      4点积分中的2点。若在本提示发表三日之后尚未作出相应反应,将由版主强制修改标题。
建议:若对本处理有异议,请点
这里意见反馈 & 网友交流 栏目中发帖申辩;若确实属于不当处理,
      本人将取消本处理,若有必要,并将采取其他适当的措施来消除对你的不利影响。
─────────────────── 版务记录 ────────────────────


[ Last edited by namejm on 2007-1-16 at 10:54 PM ]

   此帖被 -2 点积分    点击查看详情   
评分人:【 namejm 分数: -2  时间:2007-1-17 11:24


2007-1-17 11:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 2 楼』:  

怎么没有人回答阿??

在线等,我急啊!!

   此帖被 -4 点积分     点击查看详情   
评分人:【 electronixtar 分数: -4  时间:2007-1-17 11:30


2007-1-17 11:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 3 楼』:  


  楼主已经在论坛混了有一段时间了,主题贴的标题还是像个新手,实在不应该。扣几分惩罚。


2007-1-17 11:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  批处理中,/表示除,%%表示取除法运算结果的余数,%/连用是非法运算。

  CMD中,只能准确计算整除的情况,不会显示小数;对小数直接做抛弃处理,所以,小数字除以大数字,结果始终是0。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-17 11:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 5 楼』:  



  Quote:
怎么没有人回答阿??

在线等,我急啊!!

第一行,扣1分,我们“必须”回答你么?
“在线等”,威胁我们是吧?扣2分
“急”,影响读贴心情,扣1分

总共扣4分,没有意见吧?




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-1-17 11:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by namejm at 2007-1-16 22:27:
  批处理中,/表示除,%%表示取除法运算结果的余数,%/连用是非法运算。

  CMD中,只能准确计算整除的情况,不会显示小数;对小数直接做抛 ...

那又不对了阿


我在批处理中
set a=23432
set /a d=a%/3600
set /a f=a%%12345

输出的是
d=6
f=11087

但是
set /a d=a/3600
set /a f=a%12345

输出就是:
d=6
f=0

解释一下?

还有你怎么老是减我的分??~_~

2007-1-17 11:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 7 楼』:  

  set /a 是一个比较有意思的运算语句,对变量可以不加百分号对而直接引用,比如我们在 for 语句中常用的一句计数语句是 set /a num+=1,展开之后,用 set /a num=num+1 也是可以的。

  在CMD中,如果百分号对不匹配的话,就会把其中不匹配的百分号抛弃,比如:set a=123&set b=a%cd,则 echo %b% 的结果是 acd 。

  具体到 set /a d=a%/3600 这一句,则会把不匹配的百分号抛弃,把a的值23432带入语句进行运算,结果就是6了。

  Quote:
还有你怎么老是减我的分??~_~

  鉴于你的用户等级已经脱离了新手阶段好一段时间,如果你的标题是能够让人见名知意的,我就不会扣你的分了——不只是针对你一个人,我对本版块里的其他人都是这样。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-17 11:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 8 楼』:  


接受了

^^

2007-1-17 12:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: