c语言使用算术运算符比较大小,C语言学习笔记20:几大基本运算符【老九学堂】...

运算符与表达式

运算符:赋值运算符、算术运算符、关系运算符、逻辑运算符

表达式:符号与操作数的组合

3_EM6Y9ZVPXSP468M.png

单等于 = (赋值符号)计算顺序:从右往左#include 

int main() {

//我们声明了一个double类型的变量v月工资,  然后把3200赋值给v月工资

double v月工资 = 3200;

//我们声明了一个double类型的变量v总工资,然后把v月工资*2的总和,赋值给v总工资

double v总工资 = v月工资 * 2;

printf("%lf\n",v总工资);

return 0;

}

3_E4KHFRUVUWY8TJV.png

复合运算符:

3_8QWKPCEK5Y9UNQ8.png#include 

int main() {

//复合运算符

int v数字 = 8;

v数字 %= 5;

printf("%d\n",v数字);

return 0;

}

3_GU3VGPHKVYKKB49.png

算术运算符可以进行算术运算一元运算符:++  --  (只操作一个变量)

二元运算符:+ - * /  (同时操作多个变量)#include 

int main() {

int v数字 = 5;

//如果是单元的v数字++,那就没有太大的问题

//但这个是在一个表达式中,就需要非常注意了。

int v结果 = v数字++;

//这里的v数字++是先把v数字的值赋值给“结果”,再运算v数字++

printf("结果  = %d\n", v结果);

int v数字2 = 5;

int v结果2 = ++v数字2;

//这里是先计算++v数字2,然后再把右边的值赋值给左边的:v结果2

printf("结果2 = %d\n",v数字2);

return 0;

}

3_W2EGNV7EMQP7JMJ.png

关系运算符

关系运算符可以比较大小、高低、长短>  大于

>= 大于且等于

<= 小于且等于

== 恒等于(一定等于)

!= 不等于

等式成立返回1,不成立返回0。在C语言中真为1,假为0(需要引入stdbool.h)#include 

int main() {

printf("6 > 9 吗?结果 = %d\n", 6 > 9);

printf("6 

return 0;

}

3_U9KE3D8JUAKAMB7.png

逻辑运算符

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

3_6SZRKPMZHDSSYUQ.png

位运算符(选学,这个请到我的B站看一下进制转换的专题,更易懂)

3_8JSY34R7SX5TCKG.png

这里计算2个二进制数:1001和1010  (十进制为:9和10)

特别提醒:0的值可为+0,也可为-0  二进制都为

3_9KSNMT948ZXAM4C.jpg

所以不看符号位,负数的值会比正数+1,这点一定要想明白

二进制的数都是由正数转成的,所以计算的时候,要先转成正数再计算取反~

~127=-128

3_HQQRUTXK77SNBV9.jpg

3_RDJA3GY8H9CDJ8X.jpg

按位与:&

0&0=0;    //同为0,就为0

1&0=0;    //不相同,就为0

0&1=0;    //不相同,就为0

1&1=1;    //同为1,就为1

9&10=1001

&    1010

=    1000#include 

int main() {

int a = 9 & 10;

printf("%d\n",a);

return 0;

}

3_YFMZSF25GC5UPXT.png

3_ZM7RVTRCY7XJ4A6.jpg

按位或:|

0|0=0;    //同为0,就为0

0|1=1;    //不相同,就为1

1|0=1;    //不相同,就为1

1|1=1;    //同为1,就为1

9|10=1001

|    1010

=    1011#include 

int main() {

int a = 9| 10;

printf("%d\n",a);

return 0;

}

3_Q9NXNJDHFN3NDSM.png

3_HRU5MY527ECRTC3.jpg

按位取反:~

~1=0;    //如为1,就为0

~0=1;    //如为0,就为1

计算公式~n=-(n+1)    //注意取反后,需要自-1,  ~1=-(1+1)=-2

~9=0000 0000 0000 0000 0000 0000 0000 1001    //最为左边的二进制数为0就为正数,如果为1,就为负数

~ =1111 1111 1111 1111 1111 1111 1111 0110    //负数的二进制计算有点不同,需要先用正数计算出负数的二进制值,再取反得到正数

上面的值为-10                               //如:~-2=1(人脑计算法:去除-号,再自身-1,就可以得到真正的数)

正数按位取反#include 

int main() {

int a = ~9;

printf("%d\n",a);

return 0;

}

3_AEU9EYEKH6XFRY4.png

3_QWRXRUPEV3A6GBN.jpg

负数按位取反#include 

int main() {

int a = ~-2;

printf("%d\n",a);

return 0;

}

-2由~1而来,所以先要把-2的二进制写出来

1 =0000 0000 0000 0000 0000 0000 0000 0001

~  =1111 1111 1111 1111 1111 1111 1111 1110

~-2=0000 0000 0000 0000 0000 0000 0000 0001  = 1

3_6MRSTYAPYSJBCK8.png

3_9ASBAE44V2YEWT8.jpg

按位异或:^  (与'|'第4点不同)

0^0=0;    //相同,就为0

1^0=1;    //不相同,就为1

0^1=1;    //不相同,就为1

1^1=0;    //相同,就为0

9^10=1001

^    1010

=    0011#include 

int main() {

int a = 9^10;

printf("%d\n",a);

return 0;

}

3_RMERDAKY8J6XP46.png

3_27W6R8A5HEVSGGV.jpg

二进制左移:<

9<<2=0000 0000 0000 0000 0000 0000 0000 1001    //先保存最左边的符号位0

<

int main() {

int a = 9<<2;

printf("%d\n",a);

return 0;

}

3_YE4FFV45PWDPBWV.png

3_Z8E5BQY8XGDEFSH.jpg负数左移(一般是使用正数,负数会报警)

-9<<2=1111 1111 1111 1111 1111 1111 1111 0111    //先保留最左边的符号位1

=0000 0000 0000 0000 0000 0000 0000 1000    //然后转换成正数8

<

取反 =1111 1111 1111 1111 1111 1111 1101 1100    //最右边补上2个0#include 

int main() {

int a = -9<<2;

printf("%d\n",a);

return 0;

}

3_E5TEQ3RHCWXAS7Q.png

3_QWDMVQCEJUR5X6Q.jpg

二进制右移:>>正数右移

9>>2=0000 0000 0000 0000 0000 0000 0000 1001    //先保存最左边的符号位0

>>  =0000 0000 0000 0000 0000 0000 0000 0010    //右移2位后,最左边2位补上符号位0

速记法:先把最右边的值改写为0,然后自身除2的n次幂

如   :0000 0000 0000 0000 0000 0000 0000 1000   =8

结果 :0000 0000 0000 0000 0000 0000 0000 0010   =8/2/2=2   //注:最左边补上符号位#include 

int main() {

int a = 9>>2;

printf("%d\n",a);

return 0;

}

3_Z9RVM3QPMHJQVEB.png

3_G5HGC6PZQ4NYHF6.jpg负数右移(一般是使用正数,负数会报警)

-9>>2=1111 1111 1111 1111 1111 1111 1111 0111    //先保留最左边的符号位1

=0000 0000 0000 0000 0000 0000 0000 1000    //然后转换成正数-9由~8而来,所以正数是8

>>   =0000 0000 0000 0000 0000 0000 0000 0010    //向右边移动2位后,正数值为2,而原值是负数,所以~2=-3

结果 =1111 1111 1111 1111 1111 1111 1111 1101#include 

int main() {

int a = -9 >> 2;

printf("%d\n", a);

return 0;

}

3_R66DANCBDCCEEJP.png

3_QF595RUX3MGTCSB.jpg

以上是二进制的位移运算,只是了解一下他的规则即可,如果将来不弄汇编,大可不必深究

【你乐科技版权】站内所发布的一切原创内容,转载请说明是由《你乐科技》发布,内容仅限用于学习和研究,不得用于商业或非法用途,否则,一切后果请用户自负。本站信息部分来自网络,版权争议与本站无关。您必须在下载后的24小时内,彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

邮箱地址:nilekeji@163.com

最后于 7月前

被酷乐Happy编辑

,原因:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值