标题:有个语句里蕴含的逻辑我搞不懂,请指教
只看楼主
okay011
Rank: 1
等 级:新手上路
帖 子:16
专家分:6
注 册:2012-7-11
结帖率:71.43%
已结贴  问题点数:20 回复次数:2 
有个语句里蕴含的逻辑我搞不懂,请指教
是操作符 ++ 重载的一段语句:
//....
(1)   Time& operator++(Time& a){                                       //a是时间类形参 包括 second minute hour
(2)     if(!(a.second=(a.second+1)%60) && !(a.minute=(a.minute+1)%60))
(3)    a.hour=(a.hour+1)%24;
(4)   return a;
(5)   }
//....
   第二行和第三行应该是表示时间类自增的结果,但我不理解这语句的逻辑意思。请大大给解释一下,详细点。谢谢~~  另外 “!” 放在语句前是什么意思?
   这两行语句如何表示的时间分量之间的进位关系。。。。。?


[ 本帖最后由 okay011 于 2012-7-24 17:07 编辑 ]
搜索更多相关主题的帖子: return minute second 
2012-07-24 16:37
westfall999
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:40
专家分:101
注 册:2012-7-22
得分:10 
if(!(a.second=(a.second+1)%60) && !(a.minute=(a.minute+1)%60))好像表示判断如果已经达到59分59秒,那么再加一秒,分与秒都要复位成xx:00:00的形式,这时小时就要增加1小时.
假设a.second=59,a.minute=59;
if(!(a.second=(59+1)%60) && !(a.minute=(59+1)%60))
等价于if( (!a.second=0) && !(a.minute=0) )
等价于if(!0 && !0)所以结果是真的,下面的a.hour=(a.hour+1)%24;会执行。
2012-07-24 19:35
fyy376778785
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2012-7-24
得分:10 
!放于语句前面是取反的意思,假如表达式为真,取反就是假
!(a.second=(a.second+1)%60)的意思就是第59秒的时候,秒归0 分钟加1
!(a.minute=(a.minute+1)%60))同上
当59分59秒的时候,表达式值都是0,取反为真 小时加一
2012-07-24 19:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-374022-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.813185 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved