操作符の学习心得

hello everyone,我是小咲,自然不是动漫里的那个小野寺小咲,言归正传,来谈谈c语言中操作符
操作符分为算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员,哇,有这么多的吗


1算术操作符

顾名思义就是计算,从幼儿园开始就学习了加减乘除运算,相对来说并不陌生,值得注意的是c语言中,3/2=1,虽然其他语言中有些等于1.5,但是c语言遵循着两个整数相除等到整数这一规范,使得两个数相除需要使用float或者double来保留小数
例如需要 double a=3.0/2;这里还需要主义的一点是如果写成double a=3/2;执行结果a还是1,原因就是前面提到的规则。


2移位操作符

移位操作符可以说是第二次学习c语言的最大收获,第一次只在课堂中难以理解移位操作符的用处,基本可以归纳为不会用不想用不愿用;但是最近发现移位操作符的作用却很大,例如这个例子
i|=1<<a%10;i|=1<<a/10%10;i|=1<<a/100;这就是典型的查重方式,即各个数位的数字只出现一次(拓展就是26个字母的查重,这里不做叙述)比如a=123;b=456;c=789分别通过上面叙述的式子进行计算最后就是1111111110二进制(3FE)十六进制
值得一提的是向右>>由于在前面补1或0一般是补符号位,少数unsigned为逻辑;


3 是不是被吓到了?位操作符

类似数电,电路或者物理里面的门电路里的相关知识,直接套用就可以了,只是唯一注意的是c语言里主要常见的就是&,|,^;

当然不是上面的这么复杂的图啦

有一个非常好的例子就是交换两个数,先前学习的方法就是用指针(形参实参)如下面这种图所示方式解决交换,而实际上计算机是以二进制的方式进行计算,如此就出来了一种新的方法a=a^b;b=a^b;a=a^b;
求二进制中1的个数也可以用while(num){count++;num=num&(num-1)}//消灭1的改进方法或者用if((num>>1)&1==1)count++再进行循环嵌套for(i=0;i<32;i++)//代表32bit(32位系统或软件x86);


 


4赋值操作符

网上学习了一点就是数组char [10]=""与char [10]={0}的区别,主要论述就是{0}只能作为初始赋值;而“ ”可以为所欲为。其他的如&=就是两个符号的合并,也并不难理解


5单目操作符

值得注意的是int *也是;毕竟c语言处处是指针,都可以理解为指针就是啦;(c与指针)sizeof求长度;


6三目运算符

这个是我最喜欢使用的一种符号,相对美观简洁,一般在二分法用的最多就是a大于b吗;要是大于就出a,要是小于就出0;a>b?a:0;


7逗号表达式

go语言中已经与c语言用法不同,总体来说c语言中逗号表达式用法比较诡异,而python用逗号表达式进行交换则更为常见和运用广泛(猜猜哪个是c语言那个是go语言吧)?


8表达式求值

这一个就涉及到了一个新的知识弱类型语言且是静态语言的c语言与python形成鲜明对比;由于主要现在学习的是c89的规范,故而可能会有所忽略(有其他见解再进行修正吧))
整形提升与截断造成了学习c语言时运行程序代码的部分隐患,如数据丢失,或者与达成目标期望不一致等无法查出错误的问题及结论。


小咲有话说:
为什么要起信息哲学这个题目呢?
实际上最根本原因是对爱智慧这一远古而又富有历史沧桑感的命题的憧憬与信仰吧,哲学是静态的事物,不变的永恒的真理,而实践则是无限运动的世界,当真理与实践交织在一起,梦想啊就从这里起步

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值