今天看到了(数值型数据间的混合运算)。。看到这里有个小小的问题,,不知道自己的理解对不对,,所以来向大家所要治病药方来了,,,呵呵~~~
在书上是这么标名的:
double←float
↑
long
↑
unsigned
↑
int ←char、short
问题来了:1、如果两个数都为char或short型的话,是不是应该把这两个数转成int型在进行运算?还是直接转到double型再进行运算?
2、如果一个数为char型另一个数为int型,按书上说的应该是把char型转为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
----------------解决方案--------------------------------------------------------
这些天在认真看书,没来论坛,,好想你们~~~呵呵~~~所谓“无事不登三宝殿”嘛,,,初学者的问题比牛毛还多,,嘿嘿。。
今天看到了(数值型数据间的混合运算)。。看到这里有个小小的问题,,不知道自己的理解对不对,,所以来向大家所要治病药方来了,,,呵呵~~~
在书上是这么标名的:
double←float
↑
long
↑
unsigned
↑
int ←char、short
问题来了:1、如果两个数都为char或short型的话,是不是应该把这两个数转成int型在进行运算?还是直接转到double型再进行运算?//直接换成int运算
2、如果一个数为char型另一个数为int型,按书上说的应该是把char型转为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);//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型就可以了
----------------解决方案--------------------------------------------------------
喔,,,那是书上骗人了~~~~。。。。那像你们说的,转为较高级数据类型,求出的结果也是较高级的类型咯?
----------------解决方案--------------------------------------------------------