Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7372
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 52
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-07 20:52
个人简介

一条狗

文章分类

全部博文(4)

分类: 嵌入式

2015-04-28 11:55:20

    c语言里有5种基本数据类型:void, char, int, float, double,在使用这些数据类型时还必须加上诸如 signed, unsigned, short, long等关键字做修饰,之所以我们平常只是用char,int等关键字,是因为编译器已经默认char为signed char, int为signed int,这些与硬件或是内核没有关系,只与编译器有关。
    这对于跨平台移植来说,是不合适的,甚至是致命的。尤其是在嵌入式开发里。
    在32位系统中,int = long = 4 bytes = 32 bits ;在16 位系统中,int = short = 2 bytes = 16bits。所有的char都是1byte,short都是2bytes,long都是4bytes。
    所以如果要使用某种数据类型,最好是这样做(以32bit系统举例):

点击(此处)折叠或打开

  1. typedef unsigned int u32;
  2. typedef unsigned short int u16;
  3. typedef unsigned char u8;

  4. typedef signed int s32;
  5. typedef signed short int s16;
  6. typedef signed char s8;

    这样在头文件里自定义类型,有益于现在的方便操作和将来的代码移植。


     C语言中数据类型的自动转换


  1. void foo(void)
  2. {
  3.     unsigned int a = 6;
  4.     int b = -20;
  5.  
  6.     (a+b > 6) ? puts("> 6") : puts("<= 6");
  7. }

  8. 此段代码的输出为:"> 6"



  9. unsigned int i=3;
  10. cout<

  11. 此段代码的输出为:4294967293    即 0XFFFFFFFD
  12. 相当于 (unsigned int)3 * (signed int)(-1)




    当不同类型的数据进行操作时,应当首先将其转换成相同的数据类型,然后进行操作,转换规则是由低级向高级转换。转换规则如下图所示:

   参考:      
            
            http://blog.csdn.net/zhuimengzh/article/details/6728492





阅读(290) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:HDUOJ1115-计算机几何计算入门

给主人留下些什么吧!~~