A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马振伟 中级黑马   /  2014-5-8 14:04  /  1848 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马振伟 于 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没替换

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

13 个回复

倒序浏览
C#中规定mod变量的值为最后一次的赋值操作,前几次都被覆盖掉了
回复 使用道具 举报
本帖最后由 马振伟 于 2014-5-8 14:39 编辑
许庭洲 发表于 2014-5-8 14:32
C#中规定mod变量的值为最后一次的赋值操作,前几次都被覆盖掉了

按照您所说前几次被覆盖掉上面的int hour=(mod%60)/3600; 还有mod =(mod%60)%3600这些都应该被替换
这题求解的应该是错了可是这题的结果是正确的啊
回复 使用道具 举报
马振伟 发表于 2014-5-8 14:38
按照您所说前几次被覆盖掉上面的int hour=(mod%60)/3600; 还有mod =(mod%60)%3600这些都应该被替换
这题求 ...

程序是按照从上向下执行的,每一行代码的mod变量值不一样,但是mod变量的最终值是最后一次计算结果才对。
回复 使用道具 举报
程序执行是一步一步 来的,按照一定的顺序,从上到下
回复 使用道具 举报
           对一个变量进行多次赋值,其值为最后一次赋的值,前面被赋的值都会被覆盖掉。
     正因为这样,这变量与变量之间进行值互换时,需要定义中间变量temp来进行临时存储变量,避免被冲掉。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报 1 0
永远的小飞侠 发表于 2014-5-8 15:44
程序执行是一步一步 来的,按照一定的顺序,从上到下

执行程序是从上到下最后一步的console.Writeline里面的hour和  mod 怎么没被替换掉它的上一步mod已经被重新赋值console.writeline 里面用到的mod和hour里的mod应该调用最后一次赋值的mod =mod%60就是这里不明白
回复 使用道具 举报
mode = mode % 60; 左边这个mode就不说了吧,最后的结果,右边的这个mode是你上一次对它符的值,是mode=secode%(60*60*24); 这句代码中左边的这个mode,
你可以尝试把从定义了mode开始后的语句中所有的mode,用它前一句赋值来代替,这句话可能比较难以理解,比如最后一句代码其实就是 mode = ((secode % (60*60*24)) % 3600) % 60;
你可以尝试将每一条语句后面添加一个Console.WriteLine()输出一下,看看结果,也可以尝试多定义几个变量来实现

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
本帖最后由 马振伟 于 2014-5-8 18:51 编辑

可能是我表达的问题没有让大家看懂!!、
mod =mod%60是最后一次赋值
我的问题是最后显示的那一步console.writeline 里的hour=mod/3600;这里的mod 为什么不用mod =mod%60的最后一次赋值来代替,基础视频上说最后一次赋值会自动替换前面的么
回复 使用道具 举报
马振伟 发表于 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 的余数
最后一步  把他们输出出来

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
图片看的真费劲
回复 使用道具 举报
累死我了 加分吧
回复 使用道具 举报
这里的=不是数学运算里面的等于 而是 赋值,举例  就像两边是不同的篮子,将苹果从右边篮子拿到了左边篮子,
回复 使用道具 举报
提问也是一门艺术啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马