6/2 return 可以得到与 6/a(其中 a=2)不同的结果吗? (以及这如何影响 .bmp 文件的输出)

Can 6/2 return a different result than 6/a (where a=2)? (and how that affects the output of a .bmp file)

我正在完成一项作业,其中必须编写一个调整 .bmp 图像大小的程序。

我知道标题听起来很奇怪,但我发现自己遇到了这种情况。

我有这段代码:

if (l < factor - 1)
        {
            fseek(inptr, -(bi.biWidth / factor), SEEK_CUR);
        }

现在,我希望您关注 偏移量bi.biWidth == 6factor == 2,所以 -(bi.biWidth / factor) 应该等于 -3。 使用上面编写的代码,输出为 this.

并且,直接写-3,像这样:

if (l < factor - 1)
        {
            fseek(inptr, -3, SEEK_CUR);
        }

输出为this

所以,显然它应该 return 相同,但事实并非如此。我想知道为什么。

P.S.: 如果重要的话,factor 是一个命令行参数,已经通过 atoi,并且 bi.biWidth 从另一个文件调用(并且有也乘以上面的 factor 变量,然后写入我附加的代码中 - 我仍然认为这不重要)。

EDIT1LONG 是一个 int32_t 类型。 factorint 类型。

EDIT2:完整代码:https://pastebin.com/TYjQkupw and headers definitions: https://pastebin.com/aAY3U2fG

上次编辑:我会尽快关闭这个问题。除其他外,主要问题是 IDE,出于某种原因,课程的工作人员仍在努力弄清楚,没有显示 .bmp 文件的实际像素。作为一个文件,输出是完美的,但在屏幕上它看起来不像那样。工作人员在他们的计算机上检查了我的输出,他们都看到了 perfect/normal .bmp 文件;他们无法理解我的问题,直到我向他们发送了一张显示我在屏幕上看到的图像 link 的图像——这与他们在屏幕上看到的完全不同,尽管 .bmp 文件是相同的。 感谢大家花时间回答我的问题!

首先感谢所有帮助和尝试解决这个问题的人。

这是答案(在问题文本中也添加为 "last edit"):显然,问题与代码无关。我的 IDE/screen/computer 中存在某种问题(仍然不清楚),导致输出看起来与实际不同。

为了让它更清晰,就像我的计算机执行了一个和 (1+2),并且在内部,处理器知道结果是 3,但仍然 - 对于一些未知的原因-屏幕显示 4.

事情就是这样。课程工作人员仍然不知道为什么,但代码是 "okay"。

再次感谢!!