【发布时间】:2009-12-16 21:11:31
【问题描述】:
我正在编写比较代表整数的 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");
}
谢谢。
【问题讨论】:
-
您有没有想过打印出 ERROR_RANGE 以查看初始化的内容?如果从文件中读取的值为 126,您还期望会发生什么?