| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1346 人关注过本帖
标题: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
快速回复:vc下调试一个强制转换问题,单步调试察看参数时的问题
数据加载中...
 
   



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

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