操作符理解

《操作符理解》

移位:
左移右边补0;
右移后{负数左边补符号位1}
{正数补0} /负数以补码出现/(如-1出现32个1)

	0异或(相同为0,反之为1)任何数都是这个数

sizeof:
sizeof 只在编译期间确定字节大小,不参与运算;
{int arr[]或者是char ch[]-----------相当于int *arr和char *ch}
因为数组名为数组首元素的地址

		这时又牵扯到了指针:
			例如int *p; (// 这是声明),*p 声明 p 是指针,p 只能用来指向 int 型地址
			int *p=arr; // 这是声明加初始化,*p 声明p 是指针,p 只能用来指向 int 型地址,
				初始化让它指向数组arr 的 首地址,也就是 p=&arr[0];
			
			*与++时同一优先级,又由于一元运算符具有由右向左结合性,而*p++ 等价于*(p++),即先将指针后移,然后取值
			p++; // 这是语句,p 是地址, p++ 是 "p 的地址 加 sizeof(int)"


		区别:sizeof用来取得变量或类型所占用的内存大小(指针4个字节)(计算'\0')
				strlen 是返回字符串的长度(遇到‘\0’截止,不计算‘\0’长度)

逻辑与:
表达式1 && 表达式2 短路与(若1式为假直接跳出)
逻辑或:
表达式1 || 表达式2 短路或(若1式为真直接跳出)
按位与:
a & b (例如3 & 4 == 0,3 & 4即二进制数011和100按位与,结果是二进制数000)
按位或:
a | b (3 | 4的值为7,3 | 4即二进制数011和100按位或,结果是二进制数111,类似加法)

条件表达式:
表达式1 ? 表达式2 : 表达式3
例如: a>b ? a :b 判断a是否大于1,true输出a,反之输出b

逗号表达式:
只执行逗号最后的表达式(但是之前的还是会进行操作)

下标引用:

	若定义变量struct Stu stu;		stu.age = 20;//结构成员访问
	若定义指针struct Stu* pStu = &stu;		pStu->age = 20;//结构成员访问
					也可写做:struct Stu (*pStu).age = 20(因为.的优先级高,加括号)
	
	
	
	
	指向符->自带解引用(中括号[]也自带解引用);

添加问题:
不能使用if for 大于 等于 小于等运算符
判断两个数的大小?
a>b 1
a == b 0
a < b -1

int Func(int a,int b)
{
return (a-b)>>31 ? -1 : (a-b ? 1 : 0);
// ? 小于 :大于等于
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值