请问这个C++题目中,为什么!k%2==1与其它三项含义不同?
答案:2 悬赏:0 手机版
解决时间 2021-11-22 11:52
- 提问者网友:抽煙菂渘情少年
- 2021-11-22 02:44
请问这个C++题目中,为什么!k%2==1与其它三项含义不同?
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-11-22 04:04
k%2等同于k%2==1等同于k%2!=0
而!k%2是先对k取反,然后将取反结果模2判断其是否等于1
即(!k)%2==1,所以与上述三者不同。
而!k%2是先对k取反,然后将取反结果模2判断其是否等于1
即(!k)%2==1,所以与上述三者不同。
全部回答
- 1楼网友:你可爱的野爹
- 2021-11-22 05:41
这里涉及运算符优先级和运算结合。
()最优先。
! 是“非”运算,第二优先。 % 是除法取余数运算,第三优先。
== 和 !=是“逻辑等于”“逻辑不等于”的判断,优先级最低。
-----
!k%2==1 等价于 ((!k) % 2) == 1 先做“非”运算,再求余,最后判断是否等于1。
k%2==1 等价于 (k%2) == 1 这个直接求余,然后判断是否等于1。
(k%2)!=0 等价于 (k%2) != 0 这个直接求余,然后判断是否不等于0
k%2 等价于 (k%2) 这个得 算术值 0 和 1, (0为假,1为真)。
()最优先。
! 是“非”运算,第二优先。 % 是除法取余数运算,第三优先。
== 和 !=是“逻辑等于”“逻辑不等于”的判断,优先级最低。
-----
!k%2==1 等价于 ((!k) % 2) == 1 先做“非”运算,再求余,最后判断是否等于1。
k%2==1 等价于 (k%2) == 1 这个直接求余,然后判断是否等于1。
(k%2)!=0 等价于 (k%2) != 0 这个直接求余,然后判断是否不等于0
k%2 等价于 (k%2) 这个得 算术值 0 和 1, (0为假,1为真)。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯