基本数据类型转换

举报
用户已注销 发表于 2021/11/19 03:10:34 2021/11/19
【摘要】 讨论几种常见的类型转换   1,int和double的转换 int转double相当于乘以1.0 double转int相当于向下取整函数   2,相同位数的整数,有符号和无符号的转换 代码: int x=-1; cout<<unsigned int(x)<<" ...

讨论几种常见的类型转换

 

1,int和double的转换

int转double相当于乘以1.0

double转int相当于向下取整函数

 

2,相同位数的整数,有符号和无符号的转换

代码:


  
  1. int x=-1;
  2. cout<<unsigned int(x)<<" ";
  3. unsigned int y=4294967295;
  4. cout<<int(y);

输出:

4294967295   -1

也就是说,相同位数的整数,相互转换的时候,不改变每一位的值,直接按照有无符号的自己的理解来理解就行

 

3,不同位数的整数之间进行转换

以char和int为例

PS:程序员一定要理解char就是整数类型这个思想。

(1)有符号低位转高位


  
  1. char c='\0';
  2. cout<<int(c)<<" ";
  3. cout<<int(--c)<<" ";
  4. c='\0';
  5. cout<<unsigned int(c)<<" ";
  6. cout<<unsigned int(--c)<<" ";

输出:

0  -1  0  4294967295

也就是说,有符号低位转高位是填充首位,即以1开头的数就补上很多1,以0开头的数就补上很多0

(2)无符号低位转高位


  
  1. unsigned char c='\0';
  2. cout<<int(c)<<" ";
  3. cout<<int(--c)<<" ";
  4. c='\0';
  5. cout<<unsigned int(c)<<" ";
  6. cout<<unsigned int(--c)<<" ";

输出:

0  255  0  255

也就是说,无符号低位转高位是填充0

(3)高位转低位


  
  1. long long x=(1LL<<63);
  2. cout<<x<<" "<<int(x);

输出:

-9223372036854775808  0

也就是说,高位转低位是直接截取

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/105770444

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。