当前位置: 代码迷 >> C语言 >> 数值型数据间的混合运算。。。。。。。
  详细解决方案

数值型数据间的混合运算。。。。。。。

热度:429   发布时间:2006-09-12 16:27:18.0
数值型数据间的混合运算。。。。。。。
这些天在认真看书,没来论坛,,好想你们~~~呵呵~~~所谓“无事不登三宝殿”嘛,,,初学者的问题比牛毛还多,,嘿嘿。。


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

在书上是这么标名的:

double←float

long

unsigned

int ←char、short

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

就这么两个问题,,,,其它高低级混合运算我看明白了,,就这两个不敢肯定,,所以来问问高手
搜索更多相关的解决方案: 数值型  数据  运算  double  int  

----------------解决方案--------------------------------------------------------

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-9-12 16:27:18的发言:
这些天在认真看书,没来论坛,,好想你们~~~呵呵~~~所谓“无事不登三宝殿”嘛,,,初学者的问题比牛毛还多,,嘿嘿。。


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

在书上是这么标名的:

double←float

long

unsigned

int ←char、short

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

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

按最近的同一类型转换.


----------------解决方案--------------------------------------------------------
以下是引用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

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

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

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

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

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

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


----------------解决方案--------------------------------------------------------
你试试就知道了.
其实还是要看被赋值的类型.
比如:
long sum=0;
int n=23;
sum+=n;

这样的加是转换成long

/*对这类问题可以不必深究*/
----------------解决方案--------------------------------------------------------
不是吧???那不是书上骗我了??像您这样算出的结果应该是long型吧?
----------------解决方案--------------------------------------------------------
斑竹说的对呀!
只有一个数据和float或double的数据进行运算时才转化成double型,否则只转化为较为高级的数据类型。
例如:
long sum=0;
int n=23;
sum+=n;
那么n 转化为long型就可以了

----------------解决方案--------------------------------------------------------
喔,,,那是书上骗人了~~~~。。。。那像你们说的,转为较高级数据类型,求出的结果也是较高级的类型咯?
----------------解决方案--------------------------------------------------------
  相关解决方案