常用的操作符(c语言)

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//算术操作符
//int main()
//{
//	//% 取模操作符两端必须是整数
//	int a = 7 % 2;//1
//	int b = 7 / 2;//3
//	printf("%d\n%d", a, b);//输出结果为1 3
//	return 0;
//}

//移位操作符
//原码
// -3的原码
// 10000000 00000000 00000000 00000011 第一位时符号位,0代表为正数,1代表为负数
//反码
// 3的反码
// 11111111 11111111 11111111 11111100 反码是原码除了符号位不变以外,其他0->1,1->0
//补码
// -3的补码
// 11111111 11111111 11111111 11111101 补码就是反码加一
//正整数的原码、补码、反码相同
//整数在内存中存储的是补码
// 移位操作符移的是内存中的补码
//int main()
//{
//	int a = 3;
//	int b = a << 1;//"<<"为左移操作符,左移之几位后,在后面补几位0
//	printf("%d\n", a);
//	printf("%d\n", b);
//	return 0;
//}
//int main()
//{
//	int a = 3;
//	int b = a >> 1;
//	printf("%d\n", a);//">>"为右移操作符,右移分为算术右移和逻辑右移,算数右移是右移几位,在前面补几位它的符号位
//	//逻辑右移是右移几位,在前面补几位0
//	printf("%d\n", b);
//	return 0;
//}
//				

//位操作符(操作数必须是整数)
// & 按位与(两串补码并列摆放,如果两个补码同时为1,就是1,不是如此就是0)
// | 按位或(两串补码并列摆放,如果两个补码同时为0,就是0,不是如此就是1)
// ^ 按位异或(两串补码并列摆放,如果上下两个数字相同,则为0,相异就为1)

//3^3=0-->a^a=0
// 0^a=a
//011 3用二进制表达
//011
//000 按位异或计算得出
//3^5^3
//011
//101
//110
//101 3^5^3的最终结果为5
//3^3^5等于5
//0^5
//000
//101
//101

//赋值操作符
//一个‘=’符号是赋值,两个‘==’符号才是等于
//int main()
//{
//	int a = 3;
//	int b = 5;
//	if (b == 5)
//	{
//		printf("哈哈\n");
//	}
//	printf("a=%d b=%d", a, b);
//	return 0;
//}

//单目操作符(只有一个操作数)


//逻辑操作符
// &&(并且) ||(或者)
//如果&&左边为真,符号两边都要计算。如果&&左边为假,右边就不用计算了
//如果||左边为真,后面的表达式就不用计算了,如果||左边为假,后面表达式依次计算直到为真

//条件操作符
// (表达式一)?(表达式二):(表达式三)
//如果表达式一为真,结果为表达式二,不然则为表达式三

//逗号表达式
//逗号表达式,就是用逗号隔开的多个表达式
// 逗号表达式,从左往右依次执行,整个表达式结果为最后一个表达式
//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = (a > b, a, a = b + 10, b = a + 1);
//	//c=13
//	printf("%d\n", c);
//	return 0;
//}


//int main()
//{
//	int a[10] = { 0 };
//	a[7] = 10;
//	//7[a]=10;//(这是另外一种写法)等价于a[7]=10;
//	printf("%d\n", a[7]);
//	int* p = &a;//将数组a中的首元素地址赋给p,所以p为指针变量,int*代表p为整形类型
//	*(p + 7) = 10;//(p+7)就是跳过7个元素,指向数组中第8个元素,*(p+7)就是第8个元素
//	printf("%d\n", a[7]);
//	return 0;
//	//输出结果都为10
//	//a[7]等价于*(p+7)
//}

//函数调用至少得有一个操作数
//void menu()
//{
//	printf("菜单\n");
//	printf("辣椒炒肉--5元\n");
//	printf("回锅肉--10元\n");
//	printf("、、、、、、\n");
//}
//int main()
//{
//	menu();//打印菜单,函数调用可以不传参数“()”为函数调用操作符
//}

//结构体指针->结构体成员等价于(结构体对象.成员)
//

//整形提升
//一个字节等于8个比特位(bytle)
//int main()
//{
//
//	//char数据类型占一个字节
//	char a = 5;//数字5是整形数据所占4个字节
//	//00000000000000000000000000000101  5的补码
//	//00000101  数字存入char类型中会被截断为1个字节也就是8个比特位,因为补码的第一位为符号位,0为正,1为负
//	char b = 126;
//	//00000000000000000000000001111110  126的补码
//	//01111110  
//	char c = a + b;
//	//a+b
//	//00000000000000000000000000000101 
//	//00000000000000000000000001111110
//	//00000000000000000000000010000011 a+b
//	//10000011 c
//	//因为要以整形输出,c是char型数据是1个字节,int型数据是4个字节,所以在前面补c的符号位
//	//11111111111111111111111110000011
//	//因为是要以整形输出,所以要将补码转化为原码
//	//10000000000000000000000001111101  -125
//	printf("%d\n", c);//输出结果为-125
//	return 0;
//}

//先比较操作符的优先级,当优先级相同时,比较操作符的结合性

操作符还有很多,我只选取了一些比较常用的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值