回 帖 发 新 帖 刷新版面

主题:额,有个问题请大家帮助一下



        C语言中的或也就是“||”,到底是兼容或还是排斥或呢?
     在处理闰年的问题时冒出这个问题,判断闰年是这样讲的:


         能被4整除但不能被100整除,或者能被400整除。

  如果是兼容或,直接说能被4整除不就行了吗?若是排斥或倒能够理解
呵呵,似乎只有菜鸟才提出这么菜鸟的问题额。。。请高手不吝赐教奥。。
[em1]

回复列表 (共2个回复)

沙发

是兼容或,你可以这么想嘛,兼容或只要一个条件为真T测表达式就为真,而排斥或是两个条件相同为假F,不同为T,即 T || T==F,F || F==F,而F || T==T,按照这么理解下来,那么在不能被100整除的前提下,只要能被4整除,或者能被400整除的就是闰年,或者既能被4整除,又能被400整除的也是闰年。像你说那个直接能被4整除是不行的,这个判断条件的子命题是这样组成的if( (year%4==0 && year%100!=0) || year%400==0)
P=(year%4==0 && year%100!=0)
Q=year%400==0
P||Q,只要P Q中有一个为真就是闰年,像2000,能被100正整除,所以P==F,但是2000也能被400整除,说以Q=T,于是P||Q=T,所以2000是闰年,其他情况你类推

板凳

排斥析取本身就不是常用的离散数学符号,按照这个逻辑,逻辑或就是离散里的析取了
要注意,C里的&&和||并不会把整个表达式计算完,只会计算到足以决定表达式真值的位置
举例:
a=1
那么0&&a++之后a还是1
而1||a++之后a也还是1

我来回复

您尚未登录,请登录后再回复。点此登录或注册