1N元运算符,就是作用N个对象的运算符
2左值和右值:左值一般可以修改,右值不可修改,如deftype(p)结果是int&,取地址符生成右值,deftype(&p)结果是int*,指向整形指针的指针
3优先级 略,记不住。。。
4算术运算符:讲下除/和取余%
(1)(-m)/n和m/(-n)都等于-(m)/(n);
(2)m%n如果不等于0,则符号和m相同,有(-m)%n=-(m)%(n)和m/(-n)=(m)%(n)
5赋值运算:(1)赋值运算优先级低,如while((i=get_value())!=42)表示一直取到42,while(i=get_value()!=42)表示比较get_value()!=42这个后再赋给i
(2)复合运算,像op=,写为a=a(op)b
6递增和递减:后置递增优先级高于*,但是会返回初始值为加1的值,如
auto pbeg=v.begin();
while (pbeg!=v.end()&&*beg>=0)
cout<<*pbeg++<<endl;//输出当前值并将pbeg向前移动一个元素
7运算符
(1)成员访问_箭头运算符与点运算符:ptr->men等于(*ptr).men
(2)条件运算符,满足右结合律,可以实现嵌套的,如
finalgrade=(grade>90)?"high pass"
:(grade<60)?"fail":"pass";
(3)位运算符:最好只处理无符号型
(4)sizeof运算符:返回一条表达式或者一个类型名字的字节数,满足右结合律,sizeof只返回string或者vector对象固定部分的大小,获得整个数组大小用数组大小除以单个元素的大小
Sales_data data, *p;
sizeof p;//指针所占空间大小
sizeof *p;//指针所指类型占空间大小(Sales_data)
8类型转换(1)隐式类型装换(2)显示类型转换(强制类型转换)cast-name(expression)其中type是要转换的类型,expression是要转换的值
Exercise:
编写一段程序,使用条件运算符从vector中找到哪些元素的值是奇数,然后将这些奇数值翻倍
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void doubodd()
{
vector <int> num , num1(0);//初始化0个元素
int addnum,i;
while (cin >> addnum)
num.push_back(addnum);//添加vector中的元素
for (auto it = num.cbegin(); it != num.cend();++it)//用begin和end的迭代器遍历vector
{
if ((*it) % 2 == 0)//*解引用取值
i = *it ;
else
i = *it *2;
num1.push_back(i);
}
for (auto i1:num1)//输出转变后的vector
{
cout << i1 << endl;
}
}