运算符(operator)
算数运算符 7种
关系运算符 6种
逻辑运算符 3种
位运算符 6种
赋值运算符 11种
共5类33种
算术运算符
加 +
减 -
乘 *
除 /
取余 % (仅限于整数类型)
// numerator 被除数
// denominator 除数
// quotient 商
// remainder 余数
int n = 20, d=3;
int q = n / d;
int r = n % d;
printf("%d÷%d商为%d,余数%d",n,d,q,r);
应用:%2可以用于奇偶数的判断:
int main(int argc, char** argv) {
for(int i = 0; i<100; i++) {
if(i%2 == 1) {
printf("%d是奇数\n", i);
} else {
printf("%d是偶数\n", i);
}
}
return 0;
}
自增运算符 ++
i++是先用i进行操作,再对i+1;
++i是先对i+1,再用i进行操作;
关系运算符
左值==右值:相等的时候,结果是整数1;不相等的时候,结果是整数0。
int a = 1;
printf("1 == a 结果:%d \n", 1 == a); // 相等
printf("2 == a 结果:%d \n", 2 == a); // 不相等
注意:C语言中,比较“某变量是否等于某值”时,不要使用a == 1的形式,建议使用1 == a的形式。
因为a == 1很容易写成a = 1,这是一个赋值语句(无论a之前等于多少,都会变成1),赋值会成功,返回结果永远是整数1,即会被误判为相等,同时改变了a的值。
而如果1 == a如果写成1=a,不符合语法,编译器会报错。这样可以避免代码出错而自己还不知道。
逻辑运算符
运算符
中
英
说明
&&
与
AND
同真为真
||
或
OR
一荣俱荣
!
非
NOT
短路逻辑运算
以&&为例:
两个操作数都为true时,结果才为true;
第一个为false时,结果就必为false,这时不会再判断第二个操作。
int a = 1;
if ( (a < 0) && (a++ < 1) )
{
// Do Nothing
}
结果a没有自增,还是1
位运算符
& 位与
| 位或
^ 亦或
~ 补码取反
>> 右移
<< 左移
对于int a=3,扩大8倍最快的方法是a<<3,即左移3位,相当于乘以23,计算机做位移的操作要被乘除快得多,比加法都快。
扩大2倍
a<<1
缩小2倍
a>>1
扩大4倍
a<<2
缩小4倍
a>>2
扩大8倍
a<<3
缩小8倍
a>>3
扩大16倍
a<<4
缩小16倍
a>>4
赋值运算符
=
+=、-=、*=、/=、%=
&=、^=、|=、<<=、>>=
原文:https://www.cnblogs.com/tigerlion/p/11191417.html