我正在编写比较代表整数的 2 个字节的代码。我想看看字节 R 是否与 G 的 +-10 一致。我在代码中遇到的问题是在接近尾声的 if 语句中进行比较。字节永远不会超出范围,即使它们应该超出范围。我确定问题出在我如何添加/减去 error_range,但我不知道有任何其他方法可以做到这一点。
我首先考虑将字节转换为整数,但我在网上找不到任何帮助。如果这比我在这里做的更好,请告诉我怎么做。
感谢任何帮助!
const char ERROR_RANGE = 0x1010; //warning: overflow in implicit constant conversion
char R, G; /2 separate bytes
char buffer; //enough space for 1 byte
image = fopen(fileName,"r"); //open file
fread(&buffer, 1, 1, image); //read 1 byte
memcpy (&R,&buffer,1); //store it as R
fread(&buffer, 1, 1, image); //read 1 byte
memcpy (&G,&buffer,1); //store it as G
fclose(image);
if((R >= (G + ERROR_RANGE)) && (R <= (G - ERROR_RANGE)))
{
printf("Outside of range!\n");
}
谢谢。
最佳答案
你的问题是因为你的测试说:
if (R is greater than or equal to G + ERROR) AND (R is less than or equal to G - ERROR)
不可能两者兼而有之。
首先将&&
替换为||
。
更好的测试是:
if (the difference of R and G is greater than ERROR)
转化为:
if (abs(R - G) > ERROR_RANGE)
{
printf("Error");
}
关于C:比较两个字节看一个是否在另一个的一定范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917770/