C++笔记(三)运算符与类型转换

一、运算符的优先级与结合性


运算符优先级与结合性


优先级


运算符类型


运算符


结合性


1


括号、成员运算符


() , [] , -> , .


左结合


2


单目运算符


! , ~ , ++ , -- , +(正号) , -(负号) , *(取内容) , &(取地址) , sizeof


右结合


3


乘除取余运算符


*, / , %


左结合


4


加减运算符


+ , -


左结合


5


移位运算符


<<(左移) , >>(右移)


左结合


6


关系运算符


< , <= , > , >=


左结合


7


等与不等运算符


== , !=


左结合


8


按位与运算符


&


左结合


9


按位异或运算符


^


左结合


10


按位或运算符


|


左结合


11


逻辑与运算符


&&


左结合


12


逻辑或运算符


||


左结合


13


条件运算符


?:


左结合


14


赋值运算符


= , += , -= , *= , /= , &= , |= , <<= , >>=


右结合


15


逗号运算符


,


左结合

二、自增与自减

  1、a++(--)

    a首先参与表达式的运算,最后自加(减)。例如int a=1,b=2,c=0;c=(a++)+b;运行结果为c==3,a==2,b==2;

  2、(--)++a

    a先自加(减),然后参与表达式的计算。例如上面的例子,运行结果为c==4,a==2,b==2;

三、sizeof

  sizeof是个运算不,而不是函数,其功能是以字节为单位给出其操作数的存储大小。它有两种语法格式:

    ①sizeof(表达式)  或 sizeof 表达式

    ②sizeof(数据类型)

  sizeof不能用于函数类型、位字段类型或不完全类型(具有未知存储大小的数据类型,如未知存储大小的数组、未知内容的结构或联合体、void类型等)

  例:(vs的结果)

    sizeof(1.5f)等价于sizeof(float)结果为4

    sizeof(1.0)等价于sizeof(double)结果为8

    sizeof 1等价于sizeof(int)结果为4

    sizeof ‘a‘等价于sizeof(char)结果为1

四、基本类型转换

  1、隐式转换

    按照优先级(优先级高的优先完成转换)把低级类型转换为高级类型(数据类型保值精度更强),再进行运算。

  2、强制转换

    强制类型转换的格式:

      (类型名)(表达式)或(类型名)表达式。

    强制类型转换是将所需变量或表达式的值转换为所需的类型,并不改变原来变量或表达式的类型属性。

时间: 2024-10-21 09:48:05

C++笔记(三)运算符与类型转换的相关文章

.Net基础篇_学习笔记_第三天_Convert类型转换

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 第三天_Convert类型转换 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Console.WriteLine("请输入你要输入

JavaScript3基础——运算符和类型转换

JavaScript3基础--运算符和类型转换    JavaScript运算符    JavaScript运算符也称操作符.其作用是对目标数据进行运算操作. 基本数学运算符    + - * / %  分别为加,减,乘,除,求模(求余数)    加减乘除不再赘述,此处解释一下求模    eg: var a = 10%20  //10    eg: var a = 15%4   //3    求模运算较为常见的地方在于处理时间.    如下 199秒换算为几分几秒.    199/60 为分钟数

javascript学习笔记---ECMAScript运算符(位运算符)

位运算符是在数字底层(即表示数字的 32 个数位)进行操作的. 位运算 NOT 位运算 NOT 由否定号(~)表示,它是 ECMAScript 中为数不多的与二进制算术有关的运算符之一. 位运算 NOT 是三步的处理过程: 把运算数转换成 32 位数字 把二进制数转换成它的二进制反码 把二进制数转换成浮点数 例如: var iNum1 = 25; //25 等于 00000000000000000000000000011001 var iNum2 = ~iNum1; //转换为 11111111

公益图书馆-学习笔记三

1.脚手架页面布局--bootstrap 我们的整个页面分成了16个span,即16部分.在添加一个block时,要在里面设置一个div,然后div里面设置该模块所占的span数和内边距: <block name="content"> <div class="span12 p20"> <form ...> </div> </block> 该代码表示content模块占据12个span,内边距为20. 2.T

C++ Primer Plus学习笔记之运算符重载

C++ Primer Plus学习笔记之运算符重载 1,成员函数和友元函数选择的建议 下面我们先看两个例子: 成员函数重载 #include<iostream> using namespace std; class Complex { public: Complex(double r=0,double i=0) { re=r; im=i; } Complex operator+(const Complex& obj); Complex operator!(); void Display

C++学习笔记之运算符重载

一.运算符重载基本知识 在前面的一篇博文 C++学习笔记之模板(1)——从函数重载到函数模板 中,介绍了函数重载的概念,定义及用法,函数重载(也被称之为函数多态)就是使用户能够定义多个名称相同但特征标(参数列表)不同的函数,目的是在对不同类型的参数执行相同的操作时只用一个同名的函数. 运算符重载,就是使同一个运算符在面临不同类型的数据时作出不同的操作(函数重载是操作相同),就是让同一个运算符有多重功能.实际上我们经常用的许多运算符已被重载,例如,将*用于地址,将得到存储在这个地址中的值:但将它用

UE4学习笔记(三): 为什么使用C++替代UnrealScript?

原文链接: https://forums.unrealengine.com/showthread.php?2574-Why-C-for-Unreal-4&p=16252&viewfull=1#post16252 之前的三代Unreal引擎中都包括了一种叫UnrealScript的脚本语言, 用它来写游戏玩法简直太方便了, 根本不用去接触复杂的C++引擎. 尽管脚本十分受新手的欢迎, 但它却成为了创新和公布的障碍. 在Unreal引擎成长的过程中, 我们不断地踩到这种坑. 所以在2011年,

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle&lt;T&gt;

Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle<T> 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现和源码 下一篇用它们做一个多语言的demo 这两个是事件的订阅和广播,很强大,但用的时候要小心发生不必要的冲突. 先看一下它的实现思想 在Caliburn.Micro里EventAggregator要以单例的形式出现这样可以

构建之法阅读笔记三—结对编程

构建之法阅读笔记三——结对编程 何谓结对编程,结对编程就是程序员肩并肩,平等的,互补的进行开发工作,他们使用同一台电脑,编写同样的程序,一起分析,一起设计,一块交流想法. 然而我以前却并不是这样做的,我以前喜欢在没人打扰的环境下写代码,我觉得有人在我身边看着,会影响我的思路,还有我个人自尊心比较强,不太喜欢被人指指点点,所以每次都是,我写完代码之后,自己先找自己的bug,每当自己实在找不到之后,才会请教大神,但是有时候可能由于自己的能力不足,往往一个很简单的问题,我自己发现就会花费很久的时间,让

3. 蛤蟆的计算机组成原理笔记三系统总线

3. 蛤蟆的计算机组成原理笔记三系统总线 本篇名言:"公正,一定会打倒那些说假话和假作证的人. --赫拉克利特" 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47988545 1.  总线 总线是连接各个部件的信息传输线,是 各个部件共享的传输介质. 1.1             面向CPU 的双总线结构框图 1.2             单总线结构框图 1.3             以存储器为中心的双总线