| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1346 人关注过本帖
标题:vc下调试一个强制转换问题,单步调试察看参数时的问题
只看楼主 加入收藏
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
结帖率:85.71%
收藏
 问题点数:0 回复次数:12 
vc下调试一个强制转换问题,单步调试察看参数时的问题

#include <stdio.h>

int array[] = { 23, 34, 12, 17, 204, 99, 16 };
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))

void main ()
{
int d = -1, x;
int xx = TOTAL_ELEMENTS;

if ( d <= TOTAL_ELEMENTS - 2 )
x = array[d+1];
printf("%d", x); //单步调试到这里参数一切正常,独独x的值不对 array[d+1]正常。(不明白为什么)

}

本以为d的值会因为在if语句时候 由 int 强制转换成 unsinge int的时候改变 为什么一直没变??

搜索更多相关主题的帖子: 单步调 int ELEMENTS array 调试 
2007-08-13 22:26
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
没看懂你在说什么,为什么d要转化

天行健,君子以自强不息!!QQ:68660681
2007-08-13 22:42
lzy340623339
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-12
收藏
得分:0 
你的问题问得刚好反了,是d有int型已经被转化为unsign int 型了,所以-1就是一个很大的数了,远远比TOTAL_ELEMENT大,所以if语句内的表达式无法执行。
2007-08-13 22:46
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
强制改变的是临时的值,并不是d本身
运算的时候把d的值复制到寄存器再计算的
2007-08-13 22:56
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
回复:(lzy340623339)你的问题问得刚好反了,是d有i...
  调试的时候我看错了,if语句根本没有执行。

计算机之路是痛苦并快乐着的!!
2007-08-13 23:20
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 
回复:(雨中飞燕)强制改变的是临时的值,并不是d本身...
谢谢拉!!我明白了

计算机之路是痛苦并快乐着的!!
2007-08-13 23:21
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
d自生的值是不会发生转变的,if后面的语句没执行那当然错了,x没有初值。

[此贴子已经被作者于2007-8-13 23:23:20编辑过]



天行健,君子以自强不息!!QQ:68660681
2007-08-13 23:22
lzy340623339
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-10-12
收藏
得分:0 

确实d的值没有改变.题的错误可以强制转换TOTAL_ELEMENTS - 2表达式为int型,问题就可以解决了

2007-08-13 23:32
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 

用xx-2不就行了么!!


要练习算法就来http:///!!有挑战哦!!
2007-08-13 23:46
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
收藏
得分:0 

不改变的原因如雨中飞燕子所说


计算机之路是痛苦并快乐着的!!
2007-08-13 23:46
快速回复:vc下调试一个强制转换问题,单步调试察看参数时的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016744 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved