当前位置: 首页 > article >正文

关于类型转换

隐式转换

先看个例子

int a {500};
unsigned b {1000};
std::cout<<a-b;

这里的输出结果并不为-500。因为最后输出结果的类型自动转换成了unsigned,unsigned是正整数型

类型转换顺序表(由高到低)

long double

double

float

unsigned long long

long long

unsigned long

long

unsigned int

int

知识扩展*:short、char之间计算不会互相转换,而是转换成int再计算,即使是同类型间计算也会先转换成int再计算

C语言强制转换

语法:(int)(a-b)

缺点:维护时,想要找到这个类型,并不方便,因为如果查找int类型,如果到处都是这个int类型,并不好找

优点:简单快捷,直接,直接转换

C++静态转换

语法:static_cat<int>(a-b)

优点:相对安全,由编译器检测是否能转换

赋值转化

用等于号,赋值时会自动转换

float b{500.00};
int a=b;

这里b会自动转换成int型

思考

为什么这里结果是个很大的整数

#include<iostream>
#include<cassert>
void  main()
{
    int  a{ 500 };
    unsigned b{ 1000 };
    std::cout << (long long )(a-b);
    system("pause");
}

原因:因为a-b得到的结果首先是个unsigned型的,然后才被转换成了long long型

解决办法:将(long long)(a-b) 改为 (long long)a - (long long)b,这样 a 和 b 就会先被强制转换为 long long 类型

sizeof关键字

语法sizefo(int)


http://www.kler.cn/a/932.html

相关文章:

  • gesp(C++五级)(4)洛谷:B3872:[GESP202309 五级] 巧夺大奖
  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列
  • 如何选择Ubuntu版本
  • 【Spring Boot 应用开发】-04-01 自动配置-数据源-连接池
  • python实现自动登录12306抢票 -- selenium
  • Kotlin构造函数
  • CSS实现一个展示框
  • RabbitMQ Java开发教程(二)—官方原版
  • leetcode——27.移除元素
  • 【链表OJ题(六)】链表分割
  • 单调栈图文详解(附Java模板)
  • 【js逆向】hook大全
  • 线程池的使用:如何写出高效的多线程程序?
  • SPI读写SD卡速度有多快?
  • 「SAP ABAP」OPEN SQL(四)【FROM语句】
  • HTTP 协议
  • 体验攻略 | Persona VS. Profile,谁才是研究用户的最佳工具?
  • 手把手教你使用vue创建第一个vis.js
  • 【C++】list的使用 | 模拟实现
  • 5 全面认识java的控制流程
  • 系统集成项目管理工程师:第18章项目风险管理学习笔记
  • 4.类的基本概念
  • 【java】Java并发编程系列-基础知识(非常详细哦)
  • 【Python】正则表达式re库
  • JDBC指南
  • 网易C++实习一面