我正在进行一项任务,其中必须编写调整.bmp
图像大小的程序。
我知道标题可能听起来很奇怪,但我发现自己处于这种情况。
我有这段代码:
if (l < factor - 1)
{
fseek(inptr, -(bi.biWidth / factor), SEEK_CUR);
}
现在,我希望你专注于偏移。 bi.biWidth == 6
和factor == 2
,所以-(bi.biWidth / factor)
应该等于-3。使用上面编写的代码,输出是this。
并且,直接写-3,像这样:
if (l < factor - 1)
{
fseek(inptr, -3, SEEK_CUR);
}
输出是this。
所以,显然它应该返回相同,但事实并非如此。我想知道为什么。
PS:如果它很重要,factor
是一个命令行参数,它是通过atoi
,bi.biWidth
是从另一个文件中调用的(并且还被上面的factor
variable乘以,然后写入我附加的代码 - 仍然我不认为重要)。
EDIT1:LONG
是int32_t
类型。 factor
是int
类型。
EDIT2:完整代码:https://pastebin.com/TYjQkupw和标题定义:https://pastebin.com/aAY3U2fG
最后编辑:我将尽快结束这个问题。其中,主要的问题是IDE由于某些原因,该课程的工作人员仍在试图弄清楚,没有显示.bmp文件的实际像素。作为一个文件,输出是完美的,但在屏幕上它看起来不像那样。工作人员在他们的计算机上检查了我的输出,所有人都看到了完美/正常的.bmp文件;他们无法理解我的问题,直到我发送了一个显示我在屏幕上看到的内容的imgur链接 - 这与他们在他们看到的完全不同,即使.bmp文件是相同的。感谢大家花了一些时间来回答我的问题!
首先,感谢所有帮助并试图解决这个问题的人。
这就是它的答案(也作为问题文本中的“最后编辑”添加):显然,问题与代码无关。在我的IDE /屏幕/计算机中存在某种问题(仍然不清楚),这使得输出看起来与实际不同。
为了使cristal清晰,就好像我的计算机执行了一个总和(1 + 2),并且在内部,处理器知道结果是3,但仍然 - 由于一些不知情的原因 - 屏幕显示为4。
这就是发生的事情。课程工作人员仍然不知道为什么,但代码是“好的”。
再次感谢!!