零值上的一元运算符 - () - c ++

我写了这个代码来重载矩阵类上的一元运算符:
const RegMatrix RegMatrix::operator-()const{
    RegMatrix result(numRow,numCol);
    int i,j;
    for(i=0;i<numRow;++i)
        for(j=0;j<numCol;++j){
            result.setElement(i,j,(-_matrix[i][j]));
        }

        return result;
}
当我在visual studio中使用调试器运行我的程序时,它向我显示当操作在double等于零时完成时,它会将结果矩阵插入数字-0.00000。 它是一些奇怪的VS显示功能,还是我应该小心处理的东西?     
已邀请:
  有符号的零为零   标志。在普通算术中,-0 = +0   然而,在计算中,一些数字表示允许   存在两个零,通常表示   由-0(负零)和+0(正   零)。这发生在一些签名   整数的数字表示,   并且在大多数浮点数   表示。数字0是   通常编码为+0,但它可以   由+0或-0表示。      用于浮动的IEEE 754标准   点算术(目前由   大多数计算机和编程   支持浮点的语言   数字)需要+0和-0。该   零可以被视为变体   扩展实数行的这种情况   1 / -0 =-∞和1 / + 0 = +∞,除法   零到零仅为±0 /±0未定义。      负号为零的回声   数学分析的概念   从下面接近0作为   单侧限制,可以表示   通过x→0-,x→0-或x→↑0。该   符号“-0”可以非正式使用   表示一个小的负数   已经四舍五入为零。这个概念   负零也有一些   理论应用   统计力学等   学科。      据称包含了   IEEE 754中的零符号表明它很多   更容易实现数值精度   在一些关键问题中,1英寸   特别是在复杂的计算中   基本功能。[2]在另一   手,签名零运行的概念   与一般假设相反   在大多数数学领域(和   在大多数数学课程中)   负零与此相同   零。表示允许   负零可以是一个来源   程序中的错误,如软件   开发人员没有意识到(或可能   忘了),虽然两个零   表示在...下表现相同   数字比较,他们是   不同的位模式和产量   某些操作中的结果不同。 有关更多信息,请参阅签名零维基页面。     
使用double(IEEE754),定义了正负零。     
好吧,对于双打实际上有'0.0'和'-0.0'的不同值我认为这是完全合理的.... 你期望得到什么不同的结果?     
正如ereOn所说,你有一个负零:
#include <stdio.h>
int main()
{
    printf("%fn", -0.0);
}
    
-0和0是一回事,没什么好担心的。出于数学原因,浮点数能够具有正0和负0。但-0的解释方式与C / C ++算术中的0相同。     

要回复问题请先登录注册