IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言的类型转换 -> 正文阅读

[C++知识库]C语言的类型转换

类型转换 ?:常考笔试题
* 窄(有符号) char(1),short(2),int(4),float(4),long(4),long long(8),double(8) ?(无符号) 宽
* 相同类型的有符号比无符号窄,例如int 和unsigned int计算时需要把int转unsigned int
* int起(不同类型在进行运算时,至少提升为int)

例如:

int main()
{
? ? short a = -1;
? ? unsigned short b = 10;
? ? int c = -1;
? ? unsigned int d = 10;
? ? if (a > b)//a<b ?,short和unsigned short ,都需要提升为int. -1(int)>10(int)
? ? ? ? printf("a>b\n");
? ? else
? ? ? ? printf("a<b\n");

? ? if (c > d)//int(4) , unsigned int(4),需要把int转为unsigned int. c>d
? ? ? ? printf("c>d\n");
? ? else
? ? ? ? printf("c<d\n");

? ? return 0;
}

* 隐式转换,例如char a = 200; int b=12.5; ?把窄的类型往宽类型转,最后如果有赋值,一定以赋值号的左边为准
* 显示转换:强制类型转换,例如 int c = (int)12.5;
* char(有符号):-128~127
* unsigned char:0~255
* -1:二进制全1
* 十进制:1234.5=1*10^3+2*10^2+3*10^1+4*10^0+5*10^-1
* 二进制:0~1, 101.1=2^2+2^0+2^-1
* 数字(假设为1字节)转二进制:?
* ? 标准规定:对于有符号数最高位表示符号,0表示正数1表示负数
* 128 64 32 16 8 4 2 1
* ? ? 12:0000 1100
* ? ? 13:0000 1101
* ? 127:0111 1111
* ? 255:1111 1111
* ? ?-12:1000 1100?
* ? ? ??
* 给定二进制计算十进制数字:
? 1.如果是无符号数则所有的位都是数值.
? ? ? 例如unsigned char a=255;//二进制1111 1111->255
? ? ? ?unsigned char b=0xf3;//二进制1111 0011->243
? 2.如果是有符号数则先看符号位,符号位是0则为正数,后面的数值相加
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?符号位是1则为负数,需要计算其绝对值(取反+1)
? ? ? 例如: char c = 0x73;//
? ? ? ? ? ? ? ?char d=0x83;
? ? ? ? ? ? ? ?char e = 0xff;
* 位运算的应用(针对二进制,速度快),假设下面的数字为1字节
* ? ? ? ?12:0000 1100
* ? ? ? ?13:0000 1101
* ? ? ~12:1111 0011 ?按位取反
* 12&13:0000 1100 ?按位与,相同的位都为1才为1 ?
* 12 | 13:0000 1101 按位或,相同的位只要有一个1就为1
* 12^13:0000 0001 按位异或 ?,相同的位不一样才为1
* 12<<1:000 11000 24=12*2 按位左移,右边补0,相当于乘法
* 12<<2:00 110000 48=12*4
* 12>>1:00000 110 按位右移,左边补符号位(有符号数补符号位,无符号数补0)
* ?-1>>1:11111 111 ? ?
* ?位运算练习:
* 去掉最后一位 | (101101->10110) | ? ? x>>=1
? ? 在最后加一个0 | (101101->1011010) | ?x<<=1
? ? 在最后加一个1 | (101101->1011011) | ? (x<<1) | 1
? ? 把最后一位变成1 | (101100->101101) | ?x|1
? ? 把最后一位变成0 | (101101->101100) | ? (x>>1)<<1 ? ;x&(~1)
? ? 最后一位取反 | (101101->101100) | ? ? ? x^1
? ? 把右数第k位变成1 | (101001->101101,k=3) |
? ? 把右数第k位变成0 | (101101->101001,k=3) |
? ? 右数第k位取反 | (101001->101101,k=3) |?
? ? 取最右边的1位 | (1101101->1) |
? ? 取末三位 | (1101101->101) | ? ? ?
? ? 取末k位 | (1101101->1101,k=4) |?
? ? 取右数第k位 | (1101101->1,k=4) |?
? ? 当前位变1: x | 当前位1,其它位0 ? 例如 ?0101-> 1101 : x|1000
? ? 当前位变0: x & 当前位0,其它位1 ?例如 ?1101->1001: x&1011
? ? 当前位取反: x^当前位1,其它位0 ?例如 0101 -> 1101,1101->0101 :x^1000
? ? ?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:13:43  更:2022-10-17 12:16:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 3:31:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码