int x = 5;
bool t = ((x % 3) && (x % 4));
当我在visual studio中尝试此代码时,我得到变量true
的值t
。这段代码是如何工作的?
答案 0 :(得分:2)
首先,你有&&运算符,它比较两个值并返回一个布尔值,因此t将是一个布尔值。其次,在C ++中,除0之外的每个值都将计算为true,因此x % 3
(评估为2
将返回true,然后x % 4
,其将计算为1
将也回归真实。
所以最后你有
bool t = (x % 3) && (x % 4);
等于
bool t = 2 && 1;
等于
bool t = true && true;
等于
bool t = true;
答案 1 :(得分:0)
运算符%
返回除法后的余数(模数),true
是任何非0的值。
5 % 3 == 2
5 % 4 == 1
2 && 1 == true && true == true
答案 2 :(得分:0)
对于AND(&&)和OR(||)等逻辑操作,所有非零值都被视为true
x%3 -s模块操作返回值2, x%4返回1
2&& 1等于真&&是的,这等于真。
对bool类型变量的所有非零值赋值都被视为true或1,并且所有零值赋值都被视为false或0。
答案 3 :(得分:-1)
你可以这样做:
bool t =(x%3!= 0)&& (x%4!= 0);