标题:vc下调试一个强制转换问题,单步调试察看参数时的问题
取消只看楼主
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
结帖率:85.71%
 问题点数:0 回复次数:6 
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
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
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 

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


计算机之路是痛苦并快乐着的!!
2007-08-13 23:46
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 
回复:(viky2003)用xx-2不就行了么!!
对啊 xx-2 也可以!因为等于自己强制转换了。
加xx的时候我是为了方便观看TOTAL_ELEMENT的值。
原程序是没有xx的。

计算机之路是痛苦并快乐着的!!
2007-08-13 23:50
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 
我的问题是:本以为d的值会因为在if语句时候 由 int 强制转换成 unsigned int的时候改变 为什么一直没变??
只有雨中飞燕正面回答了我的问题!谢谢啊!

计算机之路是痛苦并快乐着的!!
2007-08-13 23:52
wtyj112
Rank: 1
等 级:新手上路
帖 子:222
专家分:0
注 册:2007-5-9
得分:0 

#include <stdio.h>

void main ()
{
int d = -1;
unsigned int xx = 0;
xx = d;
}
该例子说明 d的临时变量强制转换后 在给xx 变成一个很大的无符号数。说明强制转换只发生在临时变量上。

#include <stdio.h>
void main ()
{
int d = -1;
unsigned int xx ;
(int)xx = d;
}
谁能帮我解释下这个程序 类型之间发生了些什么事情? 最后xx结果是什么 为什么??


计算机之路是痛苦并快乐着的!!
2007-08-14 00:21



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




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

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