您当前的位置: 首页 >  c++

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【C++】【类型转换】C++类型转换的五种方式

命运之手 发布时间:2019-12-02 23:57:03 ,浏览量:1

C风格强制转换 即通过圆括号直接转型,常见有以下几种情况:

  • 浮点数赋值给整型,舍弃小数部分(符合一般思维,可放心使用)
  • 整数赋值给浮点型,数值不变,底层改用指数格式存储(符合一般思维,可放心使用)
  • double型小数赋值给float型小数,精度略微损失,可能出现数值范围溢出(小心使用)
  • 字符赋值给整数型,保留原字节数据,因为字符本身就是用ASCII码表示的,本质就是八位的较小整数(理解字符的存储方式,就很容易接受)
  • 整数赋值给字符型,截断高地址数据,只保留低地址的八位,因为char型最多只有八位(小心使用)
  • 有符号整数赋值给无符号整数,将包括符号在内的全部字节的直接赋值,实际数值会改变(小心使用)
  • 无符号整数赋值给有符号整数,也是将包括符号在内的全部字节的直接赋值,但是数值可能会改变(小心使用)
  • unsigned int和int字节存储区别:unsigned int和int位数是一样的,但是int将首个bit位作为正负号,0表示正数,1表示负数。unsigned int和int之间都是以字节的方式相互赋值。当字节以0开头时,它们表示的数值是相同的,当字节以1开头时,它们则分别表示整数和负数。由于int将首位作为符号位,因此它实际能表示的最大正整数只有unsigned int的一半

static_cast静态转换 类似C风格的强制转换,只允许在有关联的指针类型或基本类型间使用 比如基类指针和子类指针,int和double,对象指针和void指针


	int main() {
	    double a = 1099.255;
	    int b = static_cast(a);
	    char c[] = "hello";
	    string d = static_cast(c);
	    cout             
关注
打赏
1654938663
查看更多评论
0.0425s