C++学习笔记之表达式
2017-07-27 11:14
281 查看
表达式中如果没有指定运算的顺序,表达式如果指向并修改了同一个变量会引发未知错误,因为程序不知道先对变量执行什么操作。
以下几个运算符指定了执行顺序。
&& 从左到右,只有左侧值为真才执行右侧
|| 同上
? : 从左到右计算
, 规定了逗号运算符的计算顺序,从左到右计算,左侧计算以后将左侧的值丢弃,再计算右侧的值,逗号运算符的真正结果是逗号右侧的值。逗号运算符的优先级非常低,比其他运算符都低。
注意:
1.确定不了的时候加括号,让运算的顺序更清晰。
2.一旦在表达式中改变了某个对象的值,在其他地方就不要在使用这个对象了。
整数相除的结果还是整数,多余的部分被剔除了。21/6=3
两个数相除,只要两个数的符号相同,结果就是正数,符号不同,结果是负数。
取余不一样%,如果取余的两个对象符号相同,结果是正数,符号不同,m%(-n)=m%n, (-m)%n=-(m%n)
想要表达a>b,b>c,c>d需要用表达式:a>b&&b>c&&c>d, 不能连着写,那样会造成错误
建议除非必须,否则都用++i
iter++返回的是iter加1之前的值。cout<<*iter++<<endl;这种写法比较好,*iter++ = *(iter++);
成员访问运算符:
有两种成员访问运算符,一种是.,一种是->,点运算符获取类对象的一个成员,箭头和点运算符有关系 a->m=(*a).m
sizeof运算符
对引用类型进行sizeof运算得到被引用对象所占空间的大小
对指针进行sizeof运算得到指针本身所占空间的大小 int* p; sizeof p;
对解引用指针进行sizeof运算得到指针指向的对象所占空间的大小,指针无需有效 int *p; sizeof *p;
对数组进行sizeof运算得到数组的大小
对string或vector进行sizeof运算得到该类型固定部分的大小,不计算对象中的元素占据了多少空间
以下几个运算符指定了执行顺序。
&& 从左到右,只有左侧值为真才执行右侧
|| 同上
? : 从左到右计算
, 规定了逗号运算符的计算顺序,从左到右计算,左侧计算以后将左侧的值丢弃,再计算右侧的值,逗号运算符的真正结果是逗号右侧的值。逗号运算符的优先级非常低,比其他运算符都低。
注意:
1.确定不了的时候加括号,让运算的顺序更清晰。
2.一旦在表达式中改变了某个对象的值,在其他地方就不要在使用这个对象了。
整数相除的结果还是整数,多余的部分被剔除了。21/6=3
两个数相除,只要两个数的符号相同,结果就是正数,符号不同,结果是负数。
取余不一样%,如果取余的两个对象符号相同,结果是正数,符号不同,m%(-n)=m%n, (-m)%n=-(m%n)
想要表达a>b,b>c,c>d需要用表达式:a>b&&b>c&&c>d, 不能连着写,那样会造成错误
建议除非必须,否则都用++i
iter++返回的是iter加1之前的值。cout<<*iter++<<endl;这种写法比较好,*iter++ = *(iter++);
成员访问运算符:
有两种成员访问运算符,一种是.,一种是->,点运算符获取类对象的一个成员,箭头和点运算符有关系 a->m=(*a).m
sizeof运算符
对引用类型进行sizeof运算得到被引用对象所占空间的大小
对指针进行sizeof运算得到指针本身所占空间的大小 int* p; sizeof p;
对解引用指针进行sizeof运算得到指针指向的对象所占空间的大小,指针无需有效 int *p; sizeof *p;
对数组进行sizeof运算得到数组的大小
对string或vector进行sizeof运算得到该类型固定部分的大小,不计算对象中的元素占据了多少空间
相关文章推荐
- C++学习笔记4--表达式
- C++学习笔记6,表达式的短路逻辑
- C++ 学习笔记 1.0 : 基本语言(变量和基本类型,标准库类型,表达式,语句,函数,标准IO库)
- C++学习笔记4--表达式
- 【菜鸟C++学习笔记】7.运算符与表达式
- C++学习笔记5 - 循环与关系表达式
- c++学习笔记-------《c++自学通》第四章 表达式与语句
- C++学习笔记--正则表达式
- The C++ Programming Language 学习笔记 第6章 表达式和语句
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- 【C++学习笔记】06_运算符与表达式
- c++ 11学习笔记-- 常量表达式(constexpr)
- C++ Primer 学习笔记——表达式
- C++学习笔记——正则表达式
- c&c++反汇编与逆向分析学习笔记(8)--除法表达式
- c&c++反汇编与逆向分析学习笔记(7)--乘法表达式
- c++ 11学习笔记--Lambda 表达式(对比测试Lambda ,bind,Function Object)
- C++ 学习笔记(4)表达式、运算符、类型转换(static_cast、const_cast、reinterpret_cast、dynamic_cast)
- c++学习笔记 兰布达表达式