黑马程序员技术交流社区

标题: 关于多次赋值的问题 [打印本页]

作者: 马振伟    时间: 2014-5-8 14:04
标题: 关于多次赋值的问题
本帖最后由 马振伟 于 2014-5-9 10:53 编辑



大家好我是初学者有个问题想请教下
图片里的mod被多次赋值,取值的时候应该取最后一个赋的值我的疑问是
最后赋值的是mod=mod%60为什么前边的mod不给替换成mod%60.
mod =mod%60是最后一次赋值
我的问题是最后显示的那一步console.writeline 里的hour=mod/3600;这里的mod 为什么不用mod =mod%60的最后一次赋值来替换,基础视频上说最后一次赋值会自动替换前面的么为什么hour =mod /3600这里的mod没替换

作者: 许庭洲    时间: 2014-5-8 14:32
C#中规定mod变量的值为最后一次的赋值操作,前几次都被覆盖掉了
作者: 马振伟    时间: 2014-5-8 14:38
本帖最后由 马振伟 于 2014-5-8 14:39 编辑
许庭洲 发表于 2014-5-8 14:32
C#中规定mod变量的值为最后一次的赋值操作,前几次都被覆盖掉了

按照您所说前几次被覆盖掉上面的int hour=(mod%60)/3600; 还有mod =(mod%60)%3600这些都应该被替换
这题求解的应该是错了可是这题的结果是正确的啊
作者: 许庭洲    时间: 2014-5-8 15:07
马振伟 发表于 2014-5-8 14:38
按照您所说前几次被覆盖掉上面的int hour=(mod%60)/3600; 还有mod =(mod%60)%3600这些都应该被替换
这题求 ...

程序是按照从上向下执行的,每一行代码的mod变量值不一样,但是mod变量的最终值是最后一次计算结果才对。
作者: 永远的小飞侠    时间: 2014-5-8 15:44
程序执行是一步一步 来的,按照一定的顺序,从上到下
作者: 王运波    时间: 2014-5-8 16:21
           对一个变量进行多次赋值,其值为最后一次赋的值,前面被赋的值都会被覆盖掉。
     正因为这样,这变量与变量之间进行值互换时,需要定义中间变量temp来进行临时存储变量,避免被冲掉。
作者: 马振伟    时间: 2014-5-8 16:33
永远的小飞侠 发表于 2014-5-8 15:44
程序执行是一步一步 来的,按照一定的顺序,从上到下

执行程序是从上到下最后一步的console.Writeline里面的hour和  mod 怎么没被替换掉它的上一步mod已经被重新赋值console.writeline 里面用到的mod和hour里的mod应该调用最后一次赋值的mod =mod%60就是这里不明白
作者: continue     时间: 2014-5-8 17:17
mode = mode % 60; 左边这个mode就不说了吧,最后的结果,右边的这个mode是你上一次对它符的值,是mode=secode%(60*60*24); 这句代码中左边的这个mode,
你可以尝试把从定义了mode开始后的语句中所有的mode,用它前一句赋值来代替,这句话可能比较难以理解,比如最后一句代码其实就是 mode = ((secode % (60*60*24)) % 3600) % 60;
你可以尝试将每一条语句后面添加一个Console.WriteLine()输出一下,看看结果,也可以尝试多定义几个变量来实现
作者: 马振伟    时间: 2014-5-8 18:46
本帖最后由 马振伟 于 2014-5-8 18:51 编辑

可能是我表达的问题没有让大家看懂!!、
mod =mod%60是最后一次赋值
我的问题是最后显示的那一步console.writeline 里的hour=mod/3600;这里的mod 为什么不用mod =mod%60的最后一次赋值来代替,基础视频上说最后一次赋值会自动替换前面的么
作者: 林枫    时间: 2014-5-8 20:42
马振伟 发表于 2014-5-8 18:46
可能是我表达的问题没有让大家看懂!!、
mod =mod%60是最后一次赋值
我的问题是最后显示的那一步console.w ...

看不懂你的问题,把源码给你翻译成中文吧,你要是还不明白,建议你先锻炼一下逻辑思维,先做做数学题再来学编程。
中文如下:
声明一个整数型变量 seconds 它的值是107653
声明一个整数变量 day 他的值是 seconds/(60*60*24) 也就是 107653÷(60×60×24)
声明变量 mod  值是 seconds÷(60 X 60 X 24)的余数 seconds 的值还是 107653
声明变量 hour 值为 mod ÷ 3600  也就是 上面求出来的值除以3600
把上面的mod 的值除以3600 的余数赋值给mod
变量 min 等于 mod 除以60
mod 等于 mod 除以60 的余数
最后一步  把他们输出出来
作者: 林枫    时间: 2014-5-8 20:43
图片看的真费劲
作者: 林枫    时间: 2014-5-8 20:45
累死我了 加分吧
作者: 赵贺景    时间: 2014-5-8 20:52
这里的=不是数学运算里面的等于 而是 赋值,举例  就像两边是不同的篮子,将苹果从右边篮子拿到了左边篮子,
作者: /fendou    时间: 2014-5-8 21:55
提问也是一门艺术啊!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2