关于操作符的心得

算术操作符
/ % * + -
算术操作符中,除号两边都是整数时,默认计算结果为***整型***。若要计算结果为浮点型,需至少将/ 运算符两边的其中一个数(类型)改为浮点型
在这里插入图片描述
% 运算符两边两个操作数都必须是***整数***。
在没有括号的情况下,***相邻两个运算符***乘除(/ *)优先于加减(+ -)。(注意相邻)
以下代码为问题代码(即会出现歧义的代码):
**c + --c;
a b + b * d+ e f; (取决于哪个变量先准备好)
fun() + fun () + fun (); (不能确定先调用哪个函数)

移位操作符 (作用于二进制位)

<< >>
左移规则:左边抛弃,右边补0;
右移规则:1.逻辑移位:左边补0,右边抛弃。

加粗样式2.算术移位:右边抛弃,左边补符号位(多用)。
?有一问题未解:
int i ;
int n;
for (i = 31;i > 0; i -= 2)
{
printf("%d",(n>>i) & 1);
}
循环中右移31位,再右移29位,抛弃的位数还能找回吗?
**
位操作符
& | ^ (二进制位数之间的按位与 ,按位或,按位异或)
& ——任何数(n >>1)& 1 就可以得到 它的第i位二进制数(从右向左)
| ——少用待发
^ —— 如下代码:

int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;

这样就可以不用设置参数实现两个数值的互换;第一个a ^ b的值相当于a和b之间的钥匙,凭借他与其中一个数异或可以得到另外一个数;a ^ a = 0;a ^ 0 =a.
赋值操作符
可以初始化变量,也可以给变量重新赋值。
int a = 0;
a = 10;

复合赋值符
*+=; -=; =; /=; %=; >>=; <<=; &=; |=; ^=.
他们都是缩写。如a +=10同意为a= a +10;
单目操作符
*! ; + ; -; (正负号) ; &(取地址) ; sizeof(不是函数) ; ~ ; – ; ++; (解引用操作符 ) ; ()强制类型转换;
!举例: if (!1);

对于数组(以arr1为例),一般情况下数组名是首元素地址,两种情况例外:&arr1;
sizeof(arr1),此时数组名代表整个数组的地址。


虽然arr和 &arr显示地址相同(数组地址即为数组首元素地址),但通过以上代码验证,两者有本质区别。

  • 在指针中位指针语法,表示定义的变量位指针变量。
    ()用法:int a = (int) 3.14.强制转换浮点型变量为整型,即a = 3.

    关系操作符

< >= <= != ==
**用于条件语句。补:***操作符和变量之间,加空格隔开。
逻辑操作符
&& ||
&&(逻辑与)。!注意:(0 && 1 && 2),(1 || 0 || 2);当判断条件中逻辑与第一条语句为假时,不再执行后面的语句。当逻辑或第一条语句为真时,不在执行后面的语句。
唯一一个三目操作符 exp1? exp2 :exp3.
举例:a > b? a : b;表示如果a > b为真,输出a的值,如为假,输出b的值。
逗号表达式
(exp1,exp2,exp3,…,expn)
逗号表达式从左向右依次执行,但是逗号表达式的值只取决于最后一个表达式
验证:
在这里插入图片描述
下标引用操作符 [ ]
arr[i]等效于i[arr],因为计算机内部计算arr[i] 为 (p + i).(i[arr]为((i + p)),两者等效。
在这里插入图片描述
加粗样式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值