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

C++ 数据类型转换

一、基础转换

隐式类型转换(自动转换)

核心:尽量转成字节数多的、相同的;小于int 注意提升到 int

1. 算术转换规则

C++ 在进行算术运算时,会自动将操作数转换为相同类型,遵循以下规则,看看最后需不需要赋值给谁,要的话根据那个的类型来看:

// 转换等级(从低到高):
// bool < char < short < int < long < long long < float < double < long doubleint main() {// 示例1:小类型转大类型(提升)char c = 'A';    // 65int i = c;       // char -> int,安全cout << i << endl;  // 输出: 65// 示例2:大类型转小类型(可能丢失数据)int large = 1000;char small = large;  // int -> char,可能截断cout << (int)small << endl;  // 输出: -24(在char为8位时)// 示例3:混合运算int a = 10;double b = 3.14;double result = a + b;  // int a 先转换为 doublecout << result << endl;  // 输出: 13.14// 示例4:整数提升short s1 = 10;short s2 = 20;int sum = s1 + s2;  // short 在运算时先提升为 intcout << sum << endl;  // 输出: 30return 0;
}

2. 整数提升(Integral Promotion)

当进行算术运算时,字节数小于 int 的整数类型会自动提升为 int

#include <iostream>
#include <typeinfo>
using namespace std;int main() {char c1 = 'A', c2 = 'B';auto result = c1 + c2;cout << "c1 + c2 的类型: " << typeid(result).name() << endl;  // 输出: i (表示 int)cout << "值: " << result << endl;  // 输出: 131 ('A'(65) + 'B'(66))// 即使两个 short 相加,结果也是 intshort s1 = 100, s2 = 200;auto sum = s1 + s2;cout << "s1 + s2 的类型: " << typeid(sum).name() << endl;  // 输出: ireturn 0;
}

3. 常用的算术转换

基本上就是往字节数多的转,当有符号和无符号混合时,有符号会转换为无符号。

#include <iostream>
#include <typeinfo>
using namespace std;int main() {// 规则:转换为最宽的类型int i = 10;float f = 3.14f;double d = 2.718;auto result1 = i + f;      // int -> floatcout << "i + f 的类型: " << typeid(result1).name() << endl;  // f (float)auto result2 = f + d;      // float -> doublecout << "f + d 的类型: " << typeid(result2).name() << endl;  // d (double)auto result3 = i + d;      // int -> doublecout << "i + d 的类型: " << typeid(result2).name() << endl;  // d (double)// 符号和无符号的混合unsigned int u = 100;int si = -50;auto result4 = u + si;     // 复杂情况!cout << "u + si = " << result4 << endl;  // 输出: 50// 注意:当有符号和无符号混合时,有符号会转换为无符号// 如果 si 是负数,可能会产生意外结果int negative = -10;unsigned int positive = 5;auto result5 = negative + positive;cout << "negative + positive = " << result5 << endl;// 在32位系统中,输出: 4294967291(即 -10 的补码表示)return 0;
}
http://www.jsqmd.com/news/394812/

相关文章:

  • 【C语言精讲】第5章 整数类型深度解析
  • 2025年终总结简版
  • 过完年AI世界全变了!老金帮你5分钟看完春节13个重磅发布
  • 【Python】【机器学习】DBSCAN算法
  • 【Python】【机器学习】决策树
  • 9-7 轮廓感知(AGI基础理论) - 实践
  • 恩言-大字有声圣经发布了
  • Anyone Protocol主网上线前启动五重CTF漏洞赏金计划,邀你挑战服务器与智能合约
  • Altium Designer(AD24/25)PCB中常见的三种过孔。
  • Altium Designer(AD24/25)常见元器件封装形式介绍
  • 信号函数
  • I3C协议详解
  • day017
  • 京东e卡回收水很深?看完这篇让你的闲置卡秒变钱 - 京顺回收
  • c++学习记20260219 - ace-
  • 职工(含灵活就业)基本养老保险-遗属待遇新标准
  • 高企年报观察企业专利疑难问题全解——成都余行专利代理事务所一站式解决方案
  • Java求职面试:互联网大厂音视频场景技术深度解析
  • 小程序开店平台怎么选?主流服务商测评对比
  • 探索CNN - BIGRU - KDE模型:从结构到预测评估
  • LeetCode 1523.在区间范围内统计奇数数目:两种方法O(1)算
  • YOLO26涨点改进 | 独家创新、注意力改进篇 | TGRS 2025 | YOLO26引入PTIM并行标记交互模块,增强全局上下文信息捕捉,适合红外小目标检测,遥感小目标检测,图像分割有效涨点
  • 算力租赁成AI新刚需,企业如何避坑选对平台?
  • YOLO26涨点改进 | 全网独家创新、细节涨点改进篇 | CVPR 2025 | 将 TAB 模块引入YOLO26可显著提升其对长距离依赖建模能力,在小目标、遮挡、密集场景下带来显著检测精度
  • 从SEO到GEO:谁在主导AI搜索优化的技术变革?
  • YOLO26涨点改进 | 全网独家首发、特征融合改进篇 | AAAI 2025 | 引入CDFA对比驱动特征聚合模块,实现多尺度特征融合,增强目标相关特征、突出关键区域,提高小目标检测和分割高效涨点
  • 算力租赁市场迎来变革,RTX 4090成开发者首选
  • YOLO26涨点改进 | 全网独家创新,注意力改进篇 | TIP 2025 | 引入DWM-MSA双窗口多尺度多头自注意力,全局和局部特征全捕获,增强特征表达能力,适合目标检测、图像分类、分割完美涨点
  • YOLO26涨点改进 | 全网独家首发、特征融合改进篇 | TIP 2025 | 引入CAFM 双分支交叉注意力融合模块,实现多尺度特征融合,增强目标相关特征、突出关键区域,提高小目标检测涨点与轻量化
  • YOLO26涨点改进 | 全网独家创新,注意力改进篇 | CVPR 2024 | 引入MFMSA多频多尺度注意力,联合建模频率与空间信息,适合小目标检测、医学图像分割、遥感目标检测、图像分类、实例分割