码迷,mamicode.com
首页 > 编程语言 > 详细

C++基本数据类型转换

时间:2018-04-05 14:24:57      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:name   算术   宽度   int   类型   字节   整型   符号   否则   

切勿混合使用无符号类型和有符号类型,否则产生极大的错误。

C++不会直接把两种不同类型的值相加,而是先根据类型转换的法则转换成同一类型后再相加。

类型转换

算术转换

1, char,unsigned char,signed char,short,unsigned short

     char,unsigned char,signed char,short,unsigned short 提升成int 类型或 unsigned int 类型。

     wchar_t  char16_t  char32_t 提升成int unsigned int  long unsigned long long long unsigned long中最小的一种类型。

2, int  ,unsigned int , long , unsigned long, long long ,unsigned long long 

    不看类型!只看所占字节宽度!

    类型所占字节宽窄不同:窄字节转成宽字节

    类型所占字节宽窄相同:有符号转成无符号

    举例:

    long 和 unsigned int,如果long是4字节则 long 转换成 unsigned int ;如果long是8字节,则unsigned int 转换成  long 。

    unsigned int 和 int  转成int 转换成 unsigned int 。

3,整型与浮点型:整型转成浮点型。

4,float 转换成 double 。

 

 有符号数转换成无符号数的注意点!

1

    unsigned int u = 10;
    int b = -42;
    std::cout << b + b << std::endl;//-48
    std::cout << u + b << std::endl;//4294967264

 

2

无符号整数,必须大数 - 小数 。

 

3

for(unsigned int i = 10; i >= 0 ; --i)
  ;
//死循环

 

#include<iostream>
using namespace std;
int main() {
    unsigned int u1 = 10;
    unsigned int u2 = 20;
    cout << u2 - u1 << endl;//10
    cout << u1 - u2 << endl;//4294967286
    unsigned int u3 = 1;
    int i = -2;
    cout << u3 + i << endl;//4294967295
    system("pause");
}

 

C++基本数据类型转换

标签:name   算术   宽度   int   类型   字节   整型   符号   否则   

原文地址:https://www.cnblogs.com/afreeman/p/8722181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!