C语言中的运算符

文章目录

  • 一、算术运算符
  • 二、关系运算符
  • 三、逻辑运算符
  • 四、位运算符
  • 五、其他的运算符
  • 总结

一、算术运算符

注意:取余操作数只能是整数。自加分为左自加与右自加,左自加先自加后运算,右自加先运算后自加,自减与自加一样。

代码:

#include<stdio.h>
int main(){
    int a = 10;
    int b = 20;
    //算数运算符 + - * / % ++ --
    printf("%d\n",a+b);//30
    printf("%d\n",a-b);//-10
    printf("%d\n",a*b);//200
    printf("%d\n",b/a);//2
    printf("%d\n",b%a);//0
    printf("%d\n",a++);//10 a=11
    printf("%d\n",++a);//12 a=12
    printf("%d\n",a--);//12 a=11
    printf("%d\n",--a);//10 a=10
    printf("====================================\n");
}

运行结果:

二、关系运算符

代码:

#include<stdio.h>
int main(){
    int a = 10;
    int b = 20;
    //关系运算符 > < >= <= == !=
    printf("%d\n",a>b);//0
    printf("%d\n",a<b);//1
    printf("%d\n",a>=b);//0
    printf("%d\n",a<=b);//1
    printf("%d\n",a == b);//0
    printf("%d\n",a != b);
}

运行结果:

三、逻辑运算符

1.!逻辑反,其实就是取反,0->1,1->0。

2.&&逻辑与,又叫短路与,当&&符号左边的表达式为假,则编译器不看&&右边的代码。判断规则:两真才为真,一假则为假。

3.||逻辑或,又叫短路或,当||符号左边的表达式为真时,则编译器不看&&右边的代码。判断规则:两假才为假,一真则为真。

代码:

#include<stdio.h>
int main(){
    //逻辑运算符 ! && ||
    //! 取反
    printf("%d\n",!(a==b));//1
    //&& 两真则为真,一假则为假。当符号左边真值为0时,则编译器直接跳过右边代码。
    if(a > b && ++a){
        printf("yes\n");
    }
    printf("%d\n",a);//10
    // || 两假则为假,一真则为真。当符号的左边真值为1时,则编译器跳过有边的代码。
    if(a < b || ++b){
        printf("yes\n");
    }
    printf("%d\n",b);//20
}

运行结果:

四、位运算符

运算规则:

1.~位逻辑反:位上的数0变为1,1变为0.

2.&位逻辑与:位上的数两个1为计算后的结果为1,有一个0为0

3.|位逻辑或:位上的数两个0为计算后的结果为0,有一个1为1

4.^位逻辑异或:位上的数相同为0,不同为1

5.<< n 左移n位:数据的二进制数向左移动n位,左边补n个0

6.>> n 右移n位:数据的二进制数向右移动n位,左边补n个0

左移与右移都是针对无符号数进行的运算。

代码:

#include<stdio.h>
int main(){
    int a = 10;
    int b = 20;
    //位运算符 <<左移 >>右移 &按位与 |按位或 ^按位异或
    printf("%d\n",a<<1);
    printf("%d\n",a<<2);
    printf("%d\n",a>>1);
    printf("%d\n",a>>1);
    printf("%d\n",b&a);
    printf("%d\n",b|a);
    printf("%d\n",b^a);
    unsigned int n = 0x12ff0045;
    n = n >> 3;
    printf("%u",n);
}

运算结果:

五、其他的运算符

1.赋值运算符

1.=:只能给变量进行赋值,int a = 100;

2.可以连续赋值,int a,b,c;a=b=c=10;相当于a=10,b=10,c=10

代码:

#include<stdio.h>
int main(){
    //特殊的运算符,赋值运算符=
    //1.= 只能用于给变量赋值,常量与数组不能用
    int a1 = 100;
    int b1 = 200;
    printf("%d\n",a1);
    printf("%d\n",b1);
    //2. 可以连续使用 a1 = b1 = 100 <=> a1 = 100,b1 = 100;
    a1 = b1 = 100;
    printf("%d,%d",a1,b1);
}

运行结果:

2.复合运算符

a += b;

a -= b;

a *= b;

a /= b;

a %= b;

a &= b;

a |= b;

a ^= b;

a >>= 1;

a <<= 2;

复合运算符其实就是赋值运算符与其他的运算符相结合:例如 a+=b 等价于 a = a+b,其他的复合运算符类似。

代码:

#include<stdio.h>
int main(){
    int a = 10;
    int b = 20;
    //复合运算符 += -= *= /= %= &= |= ^= >>= <<= 。 a+=b <=> a = a+b 其余类似。
    // +=
    a += 100;
    b += 100;
    printf("%d,%d\n",a,b);

    // -=
    a -= 10;
    b -= 10;
    printf("%d,%d\n",a,b);

    // *=
    a *= 10;
    b *= 10;
    printf("%d,%d\n",a,b);

    // /=
    a /= 10;
    b /= 10;
    printf("%d,%d\n",a,b);

    // %=
    a %= 3;
    b %= 3;
    printf("%d,%d\n",a,b);

    // &= 
    a &= 10;
    b &= 10;
    printf("%d,%d\n",a,b);
    
    
    // |=
    a |= 20;
    b |= 5;
    printf("%d,%d\n",a,b);

    // ^= 
    a ^= 10;
    b ^= 10;
    printf("%d,%d\n",a,b);

    // >>= 与 <<=
    a >>= 1;
    b <<= 1;
    printf("%d,%d\n",a,b);
}

运行结果:

3.sizeof运算符

用于计算变量或者变量类型所占的字节数

代码:

#include<stdio.h>
int main(){
    //sizeof 运算符,用于计算变量或数据类型所占的字节数。
    printf("%d\n",sizeof(int));
    printf("%d\n",sizeof(short));
    printf("%d\n",sizeof(char));
    char c;
    printf("%d\n",sizeof(c));
}

运行结果:

4.return运算符

用于返回数据和结束函数。

5.条件运算符

格式:表达式1 ? 表达式2: 表达式3(表达式1满足,选择表达式2,表达式1不满足则选择表达式3)

代码:

#include<stdio.h>
int main(){
    int a = 10;
    int b = 20;
    //条件运算符 a>b?a:b 当a>b成立时选a,不成立选b。
    printf("%d",a>b?a:b);
}

运行结果:

六、运算符的优先级


总结

运算符很基础,多练练敲敲代码就能掌握了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值