strcat(b, ((x & z) == z) ? "1" : "0");
我理解strcat()
函数和条件(三元)运算符。但我不知道(x & z) == z
的含义。
答案 0 :(得分:4)
&
是按位AND运算符。
此处,(x & z) == z
表示执行x
和z
的按位AND,如果该值等于z
,则....
参考:第6.5.10节,C11
标准,“按位AND运算符”
二进制
&
运算符的结果是操作数的按位AND(即,当且仅当设置了转换后的操作数中的每个相应位时,才会设置结果中的每个位)。 / p>
答案 1 :(得分:2)
手段:
如果按位且"1"
和b
与x
相同,则将z
连接到字符串z
,否则将"0"
连接到字符串{ {1}}。
b
表示x&z
和x
的按位和。
然后将结果与z
进行比较。
如果结果与z
相同,则条件评估为TRUE,否则为FALSE。
答案 2 :(得分:1)
(x& z)== z表示在'x'中,'z'中设置的所有位都是SET。
'x'必须包含所有设置的位或者另外还可以设置更多位。那么这个条件就变成了现实。