跳至主要內容

05.运算符

约 910 字大约 3 分钟

算术运算符

运算符描述
+把两个操作数相加
-从第一个操作数中减去第二个操作数
*把两个操作数相乘
/分子除以分母
%取模运算符,整除后的余数
++自增运算符,整数值增加 1
--自减运算符,整数值减少 1
int main() {
    int n =  1;
    int m =  1;
    for (int i = 0; i < 10; i++) {
        printf("数据n: %d \n", ++n);
        printf("数据m: %d \n", m++);
    }
    return 0;
}

关系运算符

运算符描述
==检查两个操作数的值是否相等,如果相等则条件为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。
>=检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。
<=检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。

逻辑运算符

运算符描述
&&称为逻辑与运算符。如果两个操作数都 true,则条件为 true
||称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。
!称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。

赋值运算符

运算符描述
=简单的赋值运算符,把右边操作数的值赋给左边操作数
+=加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数
-=减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数
*=乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数
/=除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数
%=求模且赋值运算符,求两个操作数的模赋值给左边操作数
<<=左移且赋值运算符
>>=右移且赋值运算符
&=按位与且赋值运算符
^=按位异或且赋值运算符
|=按位或且赋值运算符

位运算符

运算符描述
&按位与操作,按二进制位进行"与"运算。
|按位或运算符,按二进制位进行"或"运算。
^异或运算符,按二进制位进行"异或"运算。
~取反运算符,按二进制位进行"取反"运算。
<<二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
>>二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
#include <stdio.h>
void printBinary(int num);
int main() {
    int n =  1;
    int m =  2;
    printf("数据&: %d \n", (n & m));
    printf("数据&&: %d \n", (n && m));
    printf("n数据:\n");
    printBinary(n);
    printf("m数据:\n");
    printBinary(m);
    printf("& 按位与操作\n");
    printBinary(n & m);
    printf("| 按位或运算符\n");
    printBinary(n | m);
    printf("^ 按二进制位进行异或\n");
    printBinary(n ^ m);
    printf("~  按二进制位进行取反 \n");
    printBinary(n ^ m);
    return 0;
}

/**
 *  以二进制形式打印整数的函数
 */
void printBinary(int num) {
    // 位操作打印二进制
    for (int i = sizeof(num) * 8 - 1; i >= 0; i--) {
        printf("%d", (num >> i) & 1);
    }
    printf("\n");
}