6/2可以返回与6 / a不同的结果(其中a = 2)? (以及它如何影响.bmp文件的输出)

问题描述 投票:0回答:1

我正在进行一项任务,其中必须编写调整.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

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

PS:如果它很重要,factor是一个命令行参数,它是通过atoibi.biWidth是从另一个文件中调用的(并且还被上面的factorvariable乘以,然后写入我附加的代码 - 仍然我不认为重要)。

EDIT1:LONGint32_t类型。 factorint类型。

EDIT2:完整代码:https://pastebin.com/TYjQkupw和标题定义:https://pastebin.com/aAY3U2fG

最后编辑:我将尽快结束这个问题。其中,主要的问题是IDE由于某些原因,该课程的工作人员仍在试图弄清楚,没有显示.bmp文件的实际像素。作为一个文件,输出是完美的,但在屏幕上它看起来不像那样。工作人员在他们的计算机上检查了我的输出,所有人都看到了完美/正常的.bmp文件;他们无法理解我的问题,直到我发送了一个显示我在屏幕上看到的内容的imgur链接 - 这与他们在他们看到的完全不同,即使.bmp文件是相同的。感谢大家花了一些时间来回答我的问题!

c bmp cs50 fseek
1个回答
0
投票

首先,感谢所有帮助并试图解决这个问题的人。

这就是它的答案(也作为问题文本中的“最后编辑”添加):显然,问题与代码无关。在我的IDE /屏幕/计算机中存在某种问题(仍然不清楚),这使得输出看起来与实际不同。

为了使cristal清晰,就好像我的计算机执行了一个总和(1 + 2),并且在内部,处理器知道结果是3,但仍然 - 由于一些不知情的原因 - 屏幕显示为4。

这就是发生的事情。课程工作人员仍然不知道为什么,但代码是“好的”。

再次感谢!!

© www.soinside.com 2019 - 2024. All rights reserved.