携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情
1.运算符
自增自减: emmm···可以理解为从左到右进行来区分:比如++i,就是在进行自加后在进行其它活动,且运行后i同样变化。 而i++就是先进行了运算,最后运算结束后,i再自加。 先声明上段那句从左向右仅限于为理解运算符所用,实际算式中的运算方向仍不变。 逻辑运算符: 运算符不算什么(中学数学类似)。表达式的下文来提。
2.表达式
赋值表达式
翻翻课本,基本的算术运算符之类就不再提了,现在主要看看复合的。(按照从右向左的结合顺序进行。)
就有了被赋值一定要在等号左边这种现象。故而如a=(b=1)中的括号便可不要,因为是先"b=1",再"a=b"。
也可以同时理解为在运算中,括号一定先于其它进行运算。对于很长很长的带括号运算,大可以先将括号内运算完毕,在进行运算,且式子内的变量赋值运算后仍改变。
若出现"a=b=c+1;",便理解为先将c值加1,再将c值赋予b,再将b值(已经是c+1)赋予a。(从右到左)
逻辑表达式
重点放在真假上面: 先 认识到1为真,0为假后继续: 假定a=4,b=5。然后: 1.由于a不等于0,a便认作是真,故而非a认作为假,即!a=0。 2.推出!a=0,为假,然而b不等于0,为真。故而!a||b(为真)=1,!a&&b(为假)=0。 故得出不等于0为真,等于0为假。 3.乱七八糟的样例 1,括号与自增自减变化区别: 多说无益,先上代码: int a=3,b=2; int s; s=++a+b++; cout<<"s= "<<s<<" a= "<<a<<" b= "<<b<<endl; a=3;b=2; s=(++a)+(b++); cout<<"s= "<<s<<" a= "<<a<<" b= "<<b<<endl; 代码中,两个输出 答案相同:s为6,a为4,b为3。可以发现: 自增自减先于其他进行运算。 2.加等减等的长运算: int a=3; a+=a-=a*=a; cout<<a<<endl; 结果为0。这种就遵循 从右至左, 先进行a*=a即a=a*a,结果为9;再进行a-=a即a=a-a,结果为0;后为0+0=0; 3.强制准换的运用
double s;
int a=2,b=3;
double x=3.5,y=2.5;
s=(float)(a+b)/2+(int)x%(int)y;
cout<<s<<endl;
结果为3.5。先将a+b结果变为浮点型(可以理解为5.0);再除2成为2.5;再加上成为整型的x(3)除整型的y(2),结果为1;两个结果相加(3.5);再赋值给s,故而s值为3.5。
可能不全之处,望谅解。有机会继续添加。
(此篇为搬运笔记,防伪核验对应账号,明天开新的一篇)