今天发现一个问题,想不通啊???

永远的魔术1号 2012-01-07 10:24:55
今天在VC++ 6.0下输入以下代码:

int iVal = 0;

if( (iVal += 3) > 4 )
{
/* 执行代码*/
}


当if语句执行完后,iVal的值为6,这是为什么啊,想不通???
...全文
299 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
ffaannggyyuu 2012-01-10
  • 打赏
  • 举报
回复
楼主的 /* 执行代码*/ 这里面有BUG,否则一定是3,不会是6
tengerye 2012-01-10
  • 打赏
  • 举报
回复
楼主不露面啊
hhyhw2001 2012-01-10
  • 打赏
  • 举报
回复
代码贴完全,一定是其他地方有问题
wtl800 2012-01-10
  • 打赏
  • 举报
回复
在VC6.0中编译运行以下代码:


// test_app.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

int main(int argc, char* argv[])
{

int iVal = 0;

if( (iVal += 3) > 4 )
{


}
printf("iVal=%d\n",iVal);
return 0;
}


输出结果: iVal=3

所以,楼主的 /* 执行代码*/ 这里面有BUG,否则一定是3,不会是6,楼主你可以拿上面代码
在VC6中试一下。
shiyunqiang 2012-01-10
  • 打赏
  • 举报
回复
应该没有问题,看不出毛病。
quwei197874 2012-01-10
  • 打赏
  • 举报
回复
代码里什么地方加的吧
zhongliangzhihou 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ok1234567 的回复:]

尽可能少的写晦涩代码,省很多事:)
[/Quote]
同意
lgstudyvc 2012-01-10
  • 打赏
  • 举报
回复
等待答案...
yuucyf 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhango5 的回复:]
今天在VC++ 6.0下输入以下代码:

int iVal = 0;

if( (iVal += 3) > 4 )
{
/* 执行代码*/
}


当if语句执行完后,iVal的值为6,这是为什么啊,想不通???
[/Quote]
如果只是单纯上面的代码,无论如何也是不会得到6的,估计你在if函数体内改变了iVal的值,有或者你的栈破坏了,导致其他地方的改动影响到你的变量。
向立天 2012-01-10
  • 打赏
  • 举报
回复
这个不可能啊
下面你是怎么操作的
fly4free 2012-01-10
  • 打赏
  • 举报
回复

在if语句中断,弄个图上来吧 包括显示反汇编内容
liangbina07 2012-01-10
  • 打赏
  • 举报
回复
就你提示信息来看 绝对是不可能等于6的 要不就是大白天见鬼
tengerye 2012-01-09
  • 打赏
  • 举报
回复
VC++ 6.0其实有很多bug比如说:
for(int i = 0; i< 2; i++);
其中i在执行完for循环之后并不会消失,如果你接着写
for(int i = 0; i< 2; i++);
就会出redefinitation的错误。
可能是相关的原因,因为你的源码不详细。所以很难说。
用户 昵称 2012-01-09
  • 打赏
  • 举报
回复
源代码说明一切。
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ljz9425 的回复:]

对不起,哥们把if看成for了
引用 2 楼 ljz9425 的回复:

if执行了两次,
第一次 iVal=3 iVal < 4为真 执行代码

第二次 iVal=6 iVal < 4为假,退出if

另if( (iVal += 3) > 4 ) 应该是 if( (iVal += 3) < 4 )
[/Quote]

没关系,大家一起努力,一起进步
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 long0857 的回复:]

楼主,如果代码没有粘贴错,那么if块内的代码应该不可能有机会被执行,if执行条件判断时iVal一定是3。
你是不是调试时手动改过iVal的值啦
[/Quote]

大哥,不要问这么……的问题
zgl7903 2012-01-08
  • 打赏
  • 举报
回复
设置个断点调试下 就知道问题在哪里了
long0857 2012-01-08
  • 打赏
  • 举报
回复
楼主,如果代码没有粘贴错,那么if块内的代码应该不可能有机会被执行,if执行条件判断时iVal一定是3。
你是不是调试时手动改过iVal的值啦
幸福官 2012-01-08
  • 打赏
  • 举报
回复
怎么可能有这样的问题,建议设置一个断点进行调试
ok1234567 2012-01-08
  • 打赏
  • 举报
回复
尽可能少的写晦涩代码,省很多事:)
加载更多回复(6)

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧