gpt4 book ai didi

c++ - 警告错误问题

转载 作者:行者123 更新时间:2023-11-28 08:20:12 26 4
gpt4 key购买 nike

程序:

void DibLaplacian8Direct(CDib sourceImg)
{
register int i,j;
int w = sourceImg.GetWidth();
int h = sourceImg.GetHeight();
CDib cpyImage = sourceImg;
BYTE** pSourceImg = sourceImg.GetPtr();
BYTE** pCpyImage = cpyImage.GetPtr();
float G;
for(j =1;j<h-1;j++)
{
for(i =1;i<w-1;i++)
{
G = -1*pCpyImage[j-1][i-1] + -1*pCpyImage[j-1][i] + (-1)*pCpyImage[j-1][i+1]+
(-1)*pCpyImage[j][i-1] + 8*pCpyImage[j][i] + (-1)*pCpyImage[j][i+1]+
-1*pCpyImage[j+1][i-1] + (-1)*pCpyImage[j+1][i] + -1*pCpyImage[j+1][i+1];
pSourceImg[j][i] = (BYTE)G;
}
}
}

警告错误:

警告.. 无法从 int 转换为 float..

Warning 1 warning C4819: The file contains a character that cannot be represented in the current code page (1257). Save the file in Unicode format to prevent data loss D:\2nd\imagetool\dibfilter.cpp 1 1 ImageTool

我不明白为什么它让我警告 int float 。对于警告 1,我正在使用 VS 2010.. 我不知道我在 StdAfx.h 包含文件中收到警告。艾米可以帮我解决这个问题。

最佳答案

第一个警告是由于 float 只有六个有效数字而 int 可以有更多。如果是这样,那么准确性就会丢失。

一般来说,您无法在不丢失数据的情况下将整数转换为 float 。此外,您无法在不丢失小数位数的情况下将 float 转换回整数,因此您会再次收到警告。

上述案例的简单代码示例:

#include<iostream>
using namespace std;

int main()
{
int a=10;
int b=3;

float c;
c=a/b;

cout << c << endl;
return 0;
}

如果您确定数据在范围内并且不会有任何准确性损失,您可以使用类型转换来消除警告。

G = (float) (.....)

检查 this第二次警告。

要消除第二个警告,您需要将文件保存为 Unicode 格式。

转到文件->高级保存选项,然后在该选项下选择要将其保存为的新编码。 UTF-8 或 UNICODE 代码页 1200 是你想要的设置。

关于c++ - 警告错误问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com