首页 > 其他 > 详细

类型转换

时间:2015-06-26 22:18:33      阅读:271      评论:0      收藏:0      [点我收藏+]

转自  http://blog.csdn.net/todd911/article/details/6643627

C语言规定,不同类型的数据需要转换成同一类型后才可进行计算,在整型、实型和字符型数据之间通过类型转换便可以进行混合运算(但不是所有类型之间都可以进行转换)

.当混合不同类型的变量进行计算时,便可能会发生类型转换

 

[cpp] view plaincopy技术分享技术分享
 
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. int main(int argc, char**argv){  
  4.     unsigned int right = 1;  
  5.     char left = -1;  
  6.     if(left < right)printf("%d < %d\n", left, right);  
  7.     else if(left == right)printf("%d = %d\n", left, right);  
  8.     else printf("%d > %d\n", left, right);  
  9.     system("PAUSE");  
  10.     return 0;  
  11. }  

 

 

运行结果是:-1 > 1

解释:按步骤进行.

1. 如果其中一个操作数为long double类型,则另一个操作数被转换为long double.

2. 否则,如果其中一个操作数为double, 则另一个操作数被转换为double.

3. 否则,如果其中一个操作数为float, 则另一个操作数也转换为float.

4. 否则,两个操作数进行 "整型升级":

    a. 如果其中一个操作数为unsigned long int, 则另一个操作数也被视为unsigned long int.

    b. 否则,如果其中一个操作数为long int,而另一个操作数类型是unsigned int, 并且long int能够表示unsigned int的所有值,则另一个操作数也被视为long int;如果long int不能表示unsigned int的所有值,则两个数都被视为unsigned long int.

    c. 否则, 如果其中一个操作数是long int,则另一个操作数也被视为long int.

    d. 否则, 如果其中一个操作数是unsigned int, 则另一个操作数也被视为unsigned int.

    e. 否则, 两个操作数都被视为int.

 

按照上面的规则,left转成unsigned int,为4294967295,所以大于1

如果代码修改成如下:

unsigned char right = 1; 

int left = -1;

则结果为:

1>-1

按照上面的规则,2个数都被看成int,所以-1>1

类型转换

原文:http://www.cnblogs.com/QingCHOW/p/4603250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!