运算符(初学笔记)

运算符

简单汇总一下简单的运算符,还有些运算符没提及

算术运算符

包括+(加法) -(减法) (乘法) /(除法) %(求余)

ps:求余两边必须是整数

求余运算的结果符号取决与前一操作数的符号

#include <stdio.h>
int main()
{
    printf("%d %d %d %d",3%2,-3%2,3%-2,-3%-2);
    return 0;
}

运算结果为 1 -1 1 -1

关系运算符

<(小于) <=(小于等于) >(大于) >=(大于等于) ==(等于) !=(不等于)

#include <stdio.h>
int main()
{
    int a=2,b=3;
    printf("%d\n",(a<b));
        printf("%d\n",(a<=b));
    printf("%d\n",(a>b));
        printf("%d\n",(a>=b));
    printf("%d\n",(a!=b));
        printf("%d\n",(a==b));
    return 0;
}

运算结果为 1 1 0 0 1 0

所以当比较结果成立时,结果为1

当比较结果不成立时,结果为0

逻辑运算符

!(非) &&(与) ||(或)

优先级:!>&&>||

综合性:自左向右

!是其中唯一的单目运算符,其他则为双目运算符

#include <stdio.h>
int main()
{
    int a,b,c,d;
    a=!1,b=!0,c=a&&b,d=a||b;
        printf("%d %d %d %d",a,b,c,d);
    return 0;
}

运算结果为 0 1 0 1

在c语言中,逻辑运算符的结果0表示假,1表示真,逻辑运算中非0表示真,0表示假;

!的真代表假,反之是真; &&代表两个数有一个为假或两个为假,则结果为假,||代表两个数有1个真或2个为真,则结果为真;

条件运算符

?:(三目运算符)

求两数之间的最小值,就可以运用到(?:)

#include <stdio.h>
int main()
{
    int a,b,c;
    scanf_s("%d %d",&a,&b);
    c=a>b?b:a;
    printf("两者之间最小值是%d",c);
    return 0;
}

scan_s是由于visual stdio2022在ANSI C中没有scanf_s(),只有scanf(),但是scanf()在读取时不检查边界,所以可能会造成内存泄露。于是Microsoft公司在VS中提供了scanf_s(),如果想继续使用scanf这个不安全的函数以下方法可以解决,或者在文件顶部添加代码:#pragma warning(disable:4996) 即可

优先级

所占字节越多,优先级越高,比如double占8个字节最多,char占一个字节最少

同运算转换一样,就是数值存储少的向多的转换

位运算符

&(按位与)

|(按位或)

前面两个都是将两个运算量对应的二进制逐一按位进行逻辑“于” “或”进行运算

如图;3(2的0次方+2的1次方) 和5(2的0次方+2的2次方)进行“与”运算

00000011

&00000101

所以结果应该为00000001 所以表达结果是1(或同理按照或的运算规则)

^(按位异或

相异为真,相同为假

~(按位取反----单目运算符,也称一元运算符)

比如: ~3 如下图

~00000011

11111100(取反后)

(补码)-1111100

-0000011

-0000100

ps:取反后如果开头数字为1的,就是负数,负数要以补码的形式存在,所以要对取反后的负数,进行每位(开头改为负号)取反 末位加1(末位+1,如果原来末位是1的话,就会进1,如同倒二位也是1,所以再进1,倒三位为0,所以变成1,结果为-0000100,所以为-4

<<(左移)

需要两个整数运算量参与,比如a<<n,就是a按照二进制向左移动n位,最高n位舍弃,最低n位用0补齐

>>(右移)

同左移,但是如果运算量有符号需要补齐符号位,无符号的补0

今天的分享就到此结束,感兴趣的小伙伴欢迎在评论区和小编一起讨论

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值