标题:数值型数据间的混合运算。。。。。。。
只看楼主
钩魂天蝎
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-9-5
 问题点数:0 回复次数:8 
数值型数据间的混合运算。。。。。。。
这些天在认真看书,没来论坛,,好想你们~~~呵呵~~~所谓“无事不登三宝殿”嘛,,,初学者的问题比牛毛还多,,嘿嘿。。


今天看到了(数值型数据间的混合运算)。。看到这里有个小小的问题,,不知道自己的理解对不对,,所以来向大家所要治病药方来了,,,呵呵~~~

在书上是这么标名的:

double←float

long

unsigned

int ←char、short

问题来了:1、如果两个数都为char或short型的话,是不是应该把这两个数转成int型在进行运算?还是直接转到double型再进行运算?
2、如果一个数为char型另一个数为int型,按书上说的应该是把char型转为int型在进行运算的吧?

就这么两个问题,,,,其它高低级混合运算我看明白了,,就这两个不敢肯定,,所以来问问高手
搜索更多相关主题的帖子: 数值型 数据 运算 double int 
2006-09-12 16:27
C之Itachi
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2006-7-16
得分:0 

char 跟int short double 的运算不需要转换类型.
#include <stdio.h>
main()
{
char a='A';
double b=2.0;
printf("%f",a-b);
getch();
}


#include <stdio.h>
main()
{
char a='A';
short b=2.0;
printf("%d",a-b);
getch();
}

#include <stdio.h>
main()
{
char a='A';
int b=2.0;
printf("%d",a-b);
getch();
}
结果分别是63.000000 63 63


2006-09-12 16:40
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用钩魂天蝎在2006-9-12 16:27:18的发言:
这些天在认真看书,没来论坛,,好想你们~~~呵呵~~~所谓“无事不登三宝殿”嘛,,,初学者的问题比牛毛还多,,嘿嘿。。


今天看到了(数值型数据间的混合运算)。。看到这里有个小小的问题,,不知道自己的理解对不对,,所以来向大家所要治病药方来了,,,呵呵~~~

在书上是这么标名的:

double←float

long

unsigned

int ←char、short

问题来了:1、如果两个数都为char或short型的话,是不是应该把这两个数转成int型在进行运算?还是直接转到double型再进行运算?//直接换成int运算
2、如果一个数为char型另一个数为int型,按书上说的应该是把char型转为int型在进行运算的吧?//对

就这么两个问题,,,,其它高低级混合运算我看明白了,,就这两个不敢肯定,,所以来问问高手

按最近的同一类型转换.


倚天照海花无数,流水高山心自知。
2006-09-12 16:43
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
以下是引用C之Itachi在2006-9-12 16:40:06的发言:

char 跟int short double 的运算不需要转换类型.
#include <stdio.h>
main()
{
char a='A';
double b=2.0;
printf("%f",a-b);
getch();
}


#include <stdio.h>
main()
{
char a='A';
short b=2.0;
printf("%d",a-b);
getch();
}

#include <stdio.h>
main()
{
char a='A';
int b=2.0;
printf("%d",a-b);//a-->int
getch();
}
结果分别是63.000000 63 63

它们是自动转换的.因为你输出的格式,所以它们也要按照你的格式进行转换输出.


倚天照海花无数,流水高山心自知。
2006-09-12 16:46
钩魂天蝎
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-9-5
得分:0 

按最近的同一类型转换??????

那如果一数为long型而另一个数为int型,不是应该两个数都转成double型在进行运算嘛?结果为双精度型。

如果按您说的(按最近的同一类型转换)那是应该long转int型,还是int转long型,进行运算?

书上是说统一转成double型再进行运算,而得出的结果为双精度型,只有int ←char、short这种情况下才转为int型运算,得出的结果为整型。

对于大哥你这句话我就不太理解了,,,难到是书上有错误???

2006-09-12 17:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
你试试就知道了.
其实还是要看被赋值的类型.
比如:
long sum=0;
int n=23;
sum+=n;

这样的加是转换成long

/*对这类问题可以不必深究*/

倚天照海花无数,流水高山心自知。
2006-09-12 17:10
钩魂天蝎
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-9-5
得分:0 
不是吧???那不是书上骗我了??像您这样算出的结果应该是long型吧?
2006-09-12 17:36
lovebb
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-9-12
得分:0 
斑竹说的对呀!
只有一个数据和float或double的数据进行运算时才转化成double型,否则只转化为较为高级的数据类型。
例如:
long sum=0;
int n=23;
sum+=n;
那么n 转化为long型就可以了
2006-09-12 17:47
钩魂天蝎
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2006-9-5
得分:0 
喔,,,那是书上骗人了~~~~。。。。那像你们说的,转为较高级数据类型,求出的结果也是较高级的类型咯?
2006-09-12 18:06



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




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

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