加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 漫长的VS 2013 Release Win 64错误的结果

发布时间:2020-12-16 07:16:29 所属栏目:百科 来源:网络整理
导读:当我在VS 2013 / Win64 / Release中尝试此代码时,我得到了错误的结果:它打印1 1. 在Visual 2013 Win32 / Debug / Release Win64 / Debug,结果是正确的. Visual Studio项目是使用默认参数创建的. #include iostreamint main(int argc,char* argv[]){ long lo
当我在VS 2013 / Win64 / Release中尝试此代码时,我得到了错误的结果:它打印1 1.

在Visual 2013 Win32 / Debug / Release& Win64 / Debug,结果是正确的.

Visual Studio项目是使用默认参数创建的.

#include <iostream>
int main(int argc,char* argv[])
{
   long long inc[2] = { 0,1 };
   long long dinc[2] = { 0,0 };

   dinc[0] = inc[1] - inc[0]; 
   dinc[1] = inc[0] - inc[1]; //expected -1 ==> display 1

   for (int i = 0; i < 2; ++i)
       std::cout << i << "t" << dinc[i] << "n";

   return 0;
}

如何解释这个结果?

解决方法

在x64的发布模式下禁用项目优化

右键单击Project – > Properties – > C/C++ – > Optimization – > Disabled

属性窗口左上角的配置应设置为Release
右上角的平台应设置为x64

编辑:
在中间有一个临时变量来持有inc [0] – inc [1]

long long total = 0;
total   = inc[0] - inc[1];
dinc[1] = total;

无论其价值如何,都会使用Optimization Enabled打印正确的值

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读