| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1442 人关注过本帖
标题:[求助]关于类型转换
只看楼主 加入收藏
weishanhu03
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-24
收藏
 问题点数:0 回复次数:11 
[求助]关于类型转换
向大家请教个类型转换的问题。谢谢!
unsigned int a=6;
int b=-20;
那么a+b为多少呢?
这样的问题该怎么解决呢?
谢谢!
搜索更多相关主题的帖子: 类型 int unsigned 
2007-09-15 10:24
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
答案是结果不确定,要看你怎么处理结果



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/
2007-09-15 10:32
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
结果是确定的.
计算机是不会作有二义性的操作,否则,程序在编译时就会出错.
计算机也不像人那样会变通,只能作固定的操作.
如:计算机在对数据进行运算时,它只能对两个同类型的操作数进行运算.
当两个操作数的类型不同时,计算机是不能进行运算.这时,程序会对两个操作的类型进行转化.
LZ给出a+b对计算机来说是同一类型的,由于a的存储单元是二个,b的存储单元也是二个.
计算机对其运算时,作同类型的操作数处理.
以LZ的程序为例:
unsigned int a=6;
int b=-20;
printf("%x",(a+b));
结果:fff2
当用int i=a+b;时,相当于i=(int)(0xfff2);
当用unsigned i=a+b时,相当于i=(unsigned)(0xfff2)

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-15 13:03
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
以下是引用neverTheSame在2007-9-15 13:03:37的发言:
结果是确定的.
计算机是不会作有二义性的操作,否则,程序在编译时就会出错.
计算机也不像人那样会变通,只能作固定的操作.
如:计算机在对数据进行运算时,它只能对两个同类型的操作数进行运算.
当两个操作数的类型不同时,计算机是不能进行运算.这时,程序会对两个操作的类型进行转化.
LZ给出a+b对计算机来说是同一类型的,由于a的存储单元是二个,b的存储单元也是二个.
计算机对其运算时,作同类型的操作数处理.
以LZ的程序为例:
unsigned int a=6;
int b=-20;
printf("%x",(a+b));
结果:fff2
当用int i=a+b;时,相当于i=(int)(0xfff2);
当用unsigned i=a+b时,相当于i=(unsigned)(0xfff2)

你不就是在列举不确定的情况吗?
对a+b的结果不同的操作,结果不同,
楼主也没有说是int i=a+b;还是unsigned i=a+b;
直接printf也不同,所以我才要问清楚



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/

2007-09-15 13:08
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

自己慢慢体会吧,我要下了.


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-15 13:10
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 

向大家请教个类型转换的问题。谢谢!
unsigned int a=6;
int b=-20;
那么a+b为多少呢?


楼主问的是表达式的值,表达式的值是确定的,再赋值给谁你们有必要考虑吗?

标准规定:如果两个数的类型不一致,则将类型低的操作数类型转换为类型高的的操作数类型,即系统把占用存储空间少的类型向占用存储单元多的类型转换,以保证运算的精度。
各类型高低顺序如下:short,char --> int --> unsigned --> long --> unsigned long --> double (分支二:float--> double)

比如:
int a,b;
a=1;
b=2;
a+b的值可以确定吗?如果你考虑把结果赋值给float或double,那你也可以说a+b的值不确定。显然只需要考虑表达式的值。
2007-09-15 13:54
weishanhu03
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2007-4-24
收藏
得分:0 
这是一道面试题。
原题是这样的:
下面程序的结果是多少?
char foo(void)
{
unsigned int a=6;
int b=-20;
char c;
(a+b>6)? (c=1): (c=0);
return c;
}

2007-09-15 14:47
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
以下是引用weishanhu03在2007-9-15 14:47:21的发言:
这是一道面试题。
原题是这样的:
下面程序的结果是多少?
char foo(void)
{
unsigned int a=6;
int b=-20;
char c;
(a+b>6)? (c=1): (c=0);
return c;
}

我说嘛,光是问a+b是多少没什么意义,你这样给出来才有意义
a+b是unsigned int(b会隐式转化为unsigned int,变成一个很大的正数)
所以a+b>6为ture,所以c是1



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
[url=http://bbs.bc-cn.net/viewthread.php?tid=162918]C++编写的Windows界面游戏[/url]
[url=http://yzfy.org/]C/C++算法习题(OnlineJudge):[/url] http://yzfy.org/

2007-09-15 15:04
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

a+b按道理是int型的.是个确定数.


倚天照海花无数,流水高山心自知。
2007-09-15 15:12
JoJooo
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-9-15
收藏
得分:0 
unsigned int a=6;
int b=-20;
怎么不用VC++的编译器啊!!
2007-09-15 20:02
快速回复:[求助]关于类型转换
数据加载中...
 
   



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

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