注意:以下内容摘自文献[1],修改了部分内容。

1.运算中各类型数据转换方向如下:

double    ←  float
  ↑     
| long    
|    
| unsigned    
|    
int char, short

其中,横向的箭头表示必定的转换,即使是两个char型的数据相加减,每个数都先转换为int,然后在运算;纵向箭头表示当运算对象为不同类型时转换的方向。例如int型与double数据进行运算时,先将int型转换为double型,然后在两个double型数据间进行运算,结果为double型。  P31[1]   (从取值范围来看,刚好是从小到大)

2.下面一个例子:

// 20191009.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <typeinfo>
using namespace std; int main()
{
system("color 3f");
char a = ;
int b = ;
cout << "type(a):" << typeid(a).name() << endl;
cout << "type(b):" << typeid(b).name() << endl;
cout << "type(a+b):" << typeid(a + b).name() << endl;
a += b;
cout << "a += b; type(a):" << typeid(a).name() << endl;
double c;
cout << "type(c):" << typeid(c).name() << endl;
c = a + b;
cout << "c = a + b; type(c):" << typeid(c).name() << endl;
system("pause");
return ;
}

运行结果如图:

(1) 在a是char型,b是int型,执行“a+b”时,必然发生将char型和float型转换成int型,而a和b中取值范围最大的是int,所以执行“a+b”相当于执行“int(a) + int(b)”,结果是int型;

(2) a += b 相当于a = a + b;由于赋值运算符“=”优先级小于算术运算符“+”,故 先执行“a+b”(优先级大小可查阅~ 【C++】运算符优先级和结合性,“a+b”上面已经得到,其结果是int型,接下来进行赋值运算由于a是char型,但是a+b结果是int型,故将int型数据赋值给char型数据,在VC++ 6.0中,char占一个字节,int型占4个字节,故将(a+b)的低8位赋值给char型的a,注意此时将取值范围大的变量赋值给取值范围小的变量有可能发生“截断”或者“溢出”(赋值过程中的类型转换可查阅~【C++】赋值过程中的类型转换

(3) 同样的,=优先级低于+,故先执行算术运算,int型的(a + b) 赋值给double型的c,取值范围小的赋值给取值范围大的,不会发生“截断”。

注意:执行赋值运算时,可考虑变量在内存中存储的二进制数,即将二进制赋值给其他变量,这样就比较好理解。

参考文献

[1]谭浩强.C++程序设计[M].北京:清华大学出版社.

【C++】表达式中各类数值型数据间的混合运算的更多相关文章

  1. 如何处理加括号的四则混合运算表达式——基于二叉树的实现(Eclipse平台 Java版)

    记得上<数据结构>课程时,利用栈的特性解决过四则混合运算表达式.而如今在编写小型关系数据库的时候,编译部分要处理where后面的逻辑表达式——检查语法正确与否的同时,还要将信息传给下一个接 ...

  2. SQL 中数值型数据截取以及四舍五入

    SQL 中数值型数据截取及四舍五入 例一: -- 将两个数值分别截取只保留两位小数 ( 注意此时字段默认为 decimal ) select CAST ( 10.097 as decimal ( 10 ...

  3. 获取数值型数组中大于60的元素个数,给数值型数组中不足60分的加20分。(数组,for循环,if条件判断语句)

    package com.Summer_0420.cn; /** * @author Summer * 获取数值型数组中大于60的元素个数 * 给数值型数组中不足60分的加20分 */ public c ...

  4. shell脚本中各类括号的作用(小结)

    技巧小结: 字符串比较用双中括号[[ ]]:算数比较用单中括号[ ]——左右留空格 算数运算用双小括号(( )) :shell命令及输出用小括号( )——左右不留空格 快速替换用花括号{ }——左右留 ...

  5. No.5 表达式中的陷阱

    1. 关于字符串的陷阱 JVM对字符串的处理 String java = new String("Java"); 创建了几个对象? 2个."Java"直接量对应 ...

  6. 第一百节,JavaScript表达式中的运算符

    JavaScript表达式中的运算符 学习要点: 1.什么是表达式 2.一元运算符 3.算术运算符 4.关系运算符 5.逻辑运算符 6.*位运算符 7.赋值运算符 8.其他运算符 9.运算符优先级 E ...

  7. shell中的数值运算

    By francis_hao    Oct 2,2017   本文摘录自bash的man手册.   算数运算相关的形式 形式 含义 ((expression)) expression按照下面描述的算术 ...

  8. Shell基础(二):Shell中的数值运算、条件测试操作、使用if选择结构

    一.Shell中的数值运算 目标: 本案例要求熟悉Linux Shell环境的特点,主要练习以下操作: 1> 使用expr.$[ ].let等整数运算工具:定义变量X=1234,然后计算X与78 ...

  9. Python中的数值类型总结

    本文参考书:<Learning Python>中文版--<Python 学习手册>第四版 Python中包含大量的数值类型,他们中的大部分与其他编程语言保持一致,因此学习他们就 ...

随机推荐

  1. 图论--差分约束--HDU\HDOJ 4109 Instrction Arrangement

    Problem Description Ali has taken the Computer Organization and Architecture course this term. He le ...

  2. 图论--2-SAT--HDU/HDOJ 1814 Peaceful Commission

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. postman(介绍)

    Postman 界面介绍 一. 安装后首次打开 postman,会提示你是否需要登录,登录的话可以云端保存你的收藏及历史记录,不登陆不影响使用.   二. 进入后就是如下图所示的界面了.看到这么多按钮 ...

  4. Java——Java是什么一门什么语言

    解释型语言 源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行: 程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次: 解释性语言代表:Python ...

  5. H - Buy Tickets POJ - 2828 逆序遍历 树状数组+二分

    H - Buy Tickets POJ - 2828 这个题目还是比较简单的,其实有思路,不过中途又断了,最后写了一发别的想法的T了. 然后脑子就有点糊涂,不应该啊,这个题目应该会写才对,这个和之前的 ...

  6. 【T-SQL】基础——表别名

    Som有时候我们需要为表设置别名,这样就可以方便的修改表. 如果在SSMS中,可以点击 Query-> SQL CMD mode --Set Alisa for the table:setvar ...

  7. 排序算法整理(Python实现)

    目录 1. 冒泡排序 2. 选择排序 3. 插入排序 4. 归并排序 5. 快速排序 1. 冒泡排序   冒泡排序(Bubble Sort)是稳定排序,其基本思想是:遍历待排序列,依次两两比较,如果顺 ...

  8. 拥抱K8S,Spring Boot 2.3提供K8s活性和就绪性探针

    Spring Boot 2.3将包括对Kubernetes liveness&readiness Probe的本地支持,扩展了2.2的"运行状况组"支持,允许开发人员选择运 ...

  9. 第一章 Windows内核概述

    第一章 Windows内核概述 这一章节描述了Windows内核知识中最重要的几个概念,这些话题在这本书之后会有更详细的描述,那些会与当前的主题密切相关.要确保你理解这个章节的概念,因为这些概念构成了 ...

  10. HDU 2010 (水)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2010 题目大意:给你段连续的数,把满足条件(数字 每一位的3 == 该数字)的数输出,就是水仙花数 解 ...