我想:
111 || 100 ---> 111, not 1
100 && 100 ---> 100, not 1
101 && 010 ---> 000, not 0
代码破碎
#include <stdio.h>
main(void){
string hexa = 0xff;
strig hexa2 = 0xf1;
// CONVERT TO INT??? cast
int hexa3 = hexa || hexa2;
int hexa4 = hexa && hexa2;
puts(hexa3);
puts(hexa4);
}
答案 0 :(得分:11)
您希望按位运算符(|
,&
)代替逻辑运算符(||
,&&
):
110 | 011 --> 111
110 & 101 --> 100
对于破损的代码,hexa
和hexb
的类型也不正确,这两种类型都应为数字类型:
int hexa = 0xff;
int hexa2 = 0xf1;
最后,要输出一个整数,您可以使用printf
格式化它们:
printf("hexa3 = 0x%08x\n", heaxa3); // display as 8 digit, 0 padded hex
答案 1 :(得分:1)
string
不是正确的数据类型。数字0xff(二进制为11111111)和字符串“0xff”之间存在很大差异。我假设你想要处理前者;将字符串解析为整数是一个完整的主题。 16位序列的一个好数据类型是unsigned int
。旁注:即使是布尔,||和|因为短路而有所不同:当你有a || b
时,只有a是假的,才会评估b。两个参数都针对a | b
进行评估。这很重要,即当两个操作数之一是具有副作用的函数调用时。