我正在生成一个随机数并检查包含的字符是否是某个字符(即 0xDB)。这似乎不是正确的方法,因为我的 if() 似乎总是 false 并转到 else。
我怎样才能实现这个目标?代码如下。谢谢!
if(buffer[randomNumber] == 0xDB)
count++;
else {
buffer[randomNumber] = 0xDB;
arrayChangeFlag++;
count++;
}
最佳答案
缓冲区的类型是什么?
我猜它是signed char
或隐式签名的char
。在大多数实现中,有符号字符的范围是(-128,+127)。 0xDB
超出了该范围,因此相等性测试可能永远不会成立。
尝试将缓冲区类型更改为unsigned char
,或将您的测试替换为:
if((unsigned char)buffer[randomNumber] == 0xDB)
或
if(buffer[randomNumber] == (char)0xDB)
关于检查数组中的某个字符是否是某个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814214/