C语言学习:操作符

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
	// >> 右移操作符(二进制位)
	int a = 16;			//0000000000010000
	int b = a >> 1;		//0000000000001000
	int c = 0;
	//算数右移 右边丢弃,左边补符号位
	//逻辑右移 右边丢弃,左边补0
	printf("%d\n", b);
	// << 左移操作没有区分,左边丢弃 右边补零
	//对于移位行为,不要移动负数位(a<<-1//error)

	// & 按位与
	a = 5;
	b = 3;
	c = a&b;
	printf("%d\n", c);
	//00000000000000000000000000000011
	//00000000000000000000000000000101
	//00000000000000000000000000000001

	// | 按位或
	a = 5;
	b = 3;
	c = a|b;
	printf("%d\n", c);
	//00000000000000000000000000000011
	//00000000000000000000000000000101
	//00000000000000000000000000000111

	// ^ 按位异或
	//相同为0,相异为1
	a = 5;
	b = 3;
	c = a^b;
	printf("%d\n", c);
	//00000000000000000000000000000011
	//00000000000000000000000000000101
	//00000000000000000000000000000110

	//不产生临时变量 交换两个数的值
	//方法一 加减法
	//a=a+b;
	//b=a-b;
	//a=a-b;
	//该方法可能产生溢出

	//方法二 异或法
	//a=a^b;
	//b=a^b;
	//a=a^b;

	// ~ 按位取反

	//sizeof操作符
	short x = 0;
	a = 10;
	printf("%d\n", sizeof(x = a + 5));
	printf("%d\n", x);
	//sizeof可以计算表达式,但是表达式不会真实运算
	int arr[10] = { 0 };
	char ch[10] = { 0 };
	printf("%d\n", sizeof(ch));		//10
	printf("%d\n", sizeof(arr));	//40
	//数组传参使用sizeof()实际上是sizeof(int),因为传递的是一个地址

	int i = 0, d = 4;
	a = 0, b = 2, c = 3;
	i = a++ && ++b && d++;
	//  计算   不算   不算(逻辑与,有一个零就停止计算了)
	printf("%d %d %d %d\n", a, b, c, d);	//1 2 3 4
	//  逻辑或正好相反

	//三目操作符 exp1?exp2;exp3,1为真,则计算2,否则计算3

	//逗号表达式( , , , , )一直算,结果为最后一个表达式的结果

	//隐式类型转换:整型提升,算术转换

	//关于计算优先级,注意不要写出问题表达式
	//写出的表达式需要通过操作符确定出唯一路径
	return 0;
}

操作符这一部分比较杂,还是搭配其他知识学习比较好。

最应注意的部分是操作符优先级和问题表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值