Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VC++;编译器和类型转换?_C++_Visual Studio_Compiler Construction_Types_Cmath - Fatal编程技术网

C++ VC++;编译器和类型转换?

C++ VC++;编译器和类型转换?,c++,visual-studio,compiler-construction,types,cmath,C++,Visual Studio,Compiler Construction,Types,Cmath,当我将一个程序从Mac移到这台Windows PC上时,VC++2008编译器给了我错误,因为它将无符号整数传递给了cmath pow()函数。据我所知,此函数不会重载以接受除浮点数以外的任何内容 是否存在忽略这些错误的编译器标志/设置?还有人知道如何找到VC++编译器上的文档吗 编辑 这不是警告,而是错误。然而,对我来说这不是一个问题,因为我的程序只处理以整数形式出现的数字,所以我不在乎它们是否是浮点数。如果只是警告,我会继续我的生活,但它不允许我编译。我能以某种方式抑制错误吗?就像我说的,我

当我将一个程序从Mac移到这台Windows PC上时,VC++2008编译器给了我错误,因为它将无符号整数传递给了cmath pow()函数。据我所知,此函数不会重载以接受除浮点数以外的任何内容

是否存在忽略这些错误的编译器标志/设置?还有人知道如何找到VC++编译器上的文档吗

编辑
这不是警告,而是错误。然而,对我来说这不是一个问题,因为我的程序只处理以整数形式出现的数字,所以我不在乎它们是否是浮点数。如果只是警告,我会继续我的生活,但它不允许我编译。我能以某种方式抑制错误吗?就像我说的,我的Mac电脑上没有出现错误,程序也很好。

我不知道有什么标志,但是清除警告对我来说很容易。只需双击“任务列表”中的每个警告,并添加相应的强制类型,无论您是否愿意

(double) my_variable

static\u cast(my\u变量)

我猜如果你得到的是含糊不清的警告,那么在某个地方定义了多个pow函数。无论如何,在我看来,最好是直言不讳。值得一提的是,我的投票选择了静态施法选项。

我不知道有国旗,但对我来说,摆脱警告已经很容易了。只需双击“任务列表”中的每个警告,并添加相应的强制类型,无论您是否愿意

(double) my_variable

static\u cast(my\u变量)

我猜如果你得到的是含糊不清的警告,那么在某个地方定义了多个pow函数。无论如何,在我看来,最好是直言不讳。值得一提的是,我的投票支持static_cast选项。

正如Mehrdad提到的,使用
\pragma warning
语法禁用警告。文件在此-


我倾向于修正警告,而不是隐藏它们

如Mehrdad所述,使用
#pragma warning
语法禁用警告。文件在此-


我倾向于修正警告,而不是隐藏它们

关于这里的其他答案,告诉问题作者关闭此警告不是一个好主意。他的代码被破坏了-他传递的是一个无符号的int而不是float。你应该告诉他修改密码

这不是警告,而是错误。然而,对我来说,这不是一个问题,因为我的 这个程序只处理作为整数的数字,所以我不在乎 它们不是浮子。如果只是警告,我会继续我的生活,但事实并非如此 让我来编译。我能以某种方式抑制错误吗?就像我说的,这些错误不是 在我的Mac上,程序很好

整数和浮点在内部使用不同的表示形式。如果int和float中的数字相同,则它们在存储器中的位模式完全不同。在任何情况下,如果您传递的是一个整数,而您应该传递一个浮点,那么您都不能期望您的代码能够工作

此外,我断言您的Mac代码要么在默默地使用该函数的重载版本(例如,您在该平台上使用C++进行编译),要么您认为它可以工作,而实际上它是偶然工作的,或者实际上不工作

补遗 任何编写的编译器都无法关闭错误

警告意味着编译器认为您犯了错误


错误意味着编译器不知道该做什么。

关于此处的其他答案,最好不要告诉问题作者关闭此警告。他的代码被破坏了-他传递的是一个无符号的int而不是float。你应该告诉他修改密码

这不是警告,而是错误。然而,对我来说,这不是一个问题,因为我的 这个程序只处理作为整数的数字,所以我不在乎 它们不是浮子。如果只是警告,我会继续我的生活,但事实并非如此 让我来编译。我能以某种方式抑制错误吗?就像我说的,这些错误不是 在我的Mac上,程序很好

整数和浮点在内部使用不同的表示形式。如果int和float中的数字相同,则它们在存储器中的位模式完全不同。在任何情况下,如果您传递的是一个整数,而您应该传递一个浮点,那么您都不能期望您的代码能够工作

此外,我断言您的Mac代码要么在默默地使用该函数的重载版本(例如,您在该平台上使用C++进行编译),要么您认为它可以工作,而实际上它是偶然工作的,或者实际上不工作

补遗 任何编写的编译器都无法关闭错误

警告意味着编译器认为您犯了错误


错误意味着编译器不知道该做什么。

C++为
pow
/
powf
重载
int
指数。注意警告。

C++对
pow
/
powf
int
指数具有重载。注意警告。

不要忽略此警告或任何警告。修好它们。编译器是你的朋友,试图让你写出好代码。一个朋友相信坚强的爱情,但他是你的朋友

如果您有一个无符号整数,并且需要一个浮点,请将无符号整数转换为浮点


这是该语言的VC++实现和IDE本身的文档。

不要忽略此警告或任何警告。修好它们。编译器是你的朋友,试图让你写出好代码。一个朋友相信坚强的爱情,但他是你的朋友

如果您有一个无符号整数,并且需要一个浮点,请将无符号整数转换为浮点

这是该语言的VC++实现和IDE本身的文档
pow((double)i, (double)j)
pow(static_cast<double>(i), static_cast<double>(j))
std::pow(static_cast<double>(i), j);