事前日常敲黑板
(1)今天涉及到的某些算式可能有些颠覆三观,请事先做好准备。
昨天有这样一段代码
void main(){
int a;
a = 3;
int b;
b = a;
}
也稍微提了一下这里面的‘=’ 不是等于的意思,而是把 后面的值放到前面那个变量代表的空间中。这里的 ‘=’ 就是一种用来进行运算的符号 也叫运算符,运算符是一种用来进行运算的符号,通常用来改变变量内容或得到某些结果。
例如:
void main(){与前面的'=' 相似,这里的'+' 也是一种运算符,它的作用是得到 3 + 4 的结果 7 这里的作用就是得到结果。然后这里的 '='运算符的作用是 将 3 + 4 计算出来的结果 7 放到变量a代表的空间中这里的作用就是改变变量内容。(这里涉及到一些先算哪个的问题,暂时不考虑)。所以,这段程序执行完之后变量a代表的值是7。
int a;
a = 3 + 4;
}
既然‘+’可以用 那么相应的‘-’也是可以用的,然后是'*' (乘号) 和 '/'(除号)以及神秘的'%'(来得到余数) 例如:a=8%5;我们学过余数,正常来说8除以5等于1余3。所以这里8%5的结果就是余数3。当然这些加减乘除不仅仅可以用于常量,也可以用于变量。例如:
#include<iostream>这里在运算时用到了()因为 计算机的这些操作符和正常的算式是一样的,有一个优先级的问题,比如乘号的优先级大于减号,所以如果减法和乘法同级时会先计算乘法,计算机也是一样因为*比-优先级高,所以想要先算减法的结果就要把前面的用小括号括起来。
using namespace std;
void main(){
int a;
int b=18,c=5;
a = ((b-c+3)*3)%c;
cout<<a<<endl;
}
上面的加减乘除和取模(%)是为了计算出一个结果,所以也叫 算术运算符
还有些运算符是为了比较两个量(可以使连个变量,或两个常量或一个变量一个常量之间的关系) 称为关系运算符
例如 > < >=(大于等于) <=(小于等于) ==(等于,用来判断两个值是否相等) 和 !=(不等于 用来判断两个值是否不相等)。如果与事实相符合那么结果是 '真' 否则 结果是 '假' (具体使用 暂时 不用管的,后面用到的时候会重新提到的。这里只是先介绍一下有这么一种东西)
还有一些类似于上面用到的'=' 用来改变变量的值,这种一般称作 赋值运算符(用来把后面的值赋给前面的变量)
然后就是一些 骚操作 比如
+=
例:a += 3; 等效于 a = a + 3; 就是把a代表的值加上3的结果放回a代表的空间中
既然有了 += 这种神秘的操作 于是 -= *= /= %= 也就都扑面而来了,具体用法和+=相同
例:
#include<iostream>
using namespace std;
void main(){
int a;
a = 0;
a += 3;
cout<<a<<endl;
int b;
b = 4;
b *= a;
cout<<b<<endl;
}
注:刚刚这些赋值运算符前面一定是变量 后面变量和常量都可以 甚至 还可以是一些神奇的东西。(重点在最后两行)
#include<iostream>
using namespace std;
void main(){
int a;
a = 0;
a += 3;
cout<<a<<endl;
int b;
b = 4;
b *= a;
cout<<b<<endl;
b -= (a+3);
cout<<b<<endl;
}
和+=这种操作 类似的还有个 ++ ,它的作用相当于 +=1 也就是说执行完 i++后和执行完i=i+1后 i的值是相同的 。但是有一点须要注意 ++ 既可以放在 变量后面 如 i++ 也可以放到变量前面 如 ++i。它们两个的区别在于 ++ 在前面时 变量先自增1 然后再执行当前条语句。如果是++在后面 则先执行当前语句 然后再自增1 例如:
#include<iostream>
using namespace std;
void main(){
int a;
a = 0;
cout<<a++<<endl;
cout<<a<<endl;
}
结果是 0 1 因为第一个的
cout<<a++<<endl;相当于
cout<<a<<endl;
a = a + 1;
所以 第一次输出的是0 然后输出的是1。
当++放到变量前面时
#include<iostream>
using namespace std;
void main(){
int a;
a = 0;
cout<<++a<<endl;
cout<<a<<endl;
}
结果是1 1 因为
cout<<++a<<endl;相当于
a = a + 1;
cout<<a<<endl;
注意:与++类似的还有一个-- 当然 ** 和 // 这种 不存在的