标题: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-162462-1-1.html




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

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