c语言学习记录——运算符

1三大类:算术运算符,关系运算符,逻辑运算符

2优先级,结合方式:优先级高比优先级低先运算,优先级相同则按结合方向处理。

3例如:

 上到下优先级降低。

运算符解释结合方式
()  []  ->  .括号(函数),数组,两种结构访问由左向右

!  ~  ++  --  +  -

*  &  (类型) sizeof

否定,按位否定,增量,减量,正负号

间接,取地址,类型转换,求大小

由右向左

*  /  %乘,除,取模由左向右
+  -加,减由左向右
<<  >>左移,右移由左向右
<  <=  >=  >小于,小于等于,大于等于,大于由左向右
==   !=等于,不等于由左向右
&按位与由左向右
^按位异或由左向右
|按位或由左向右
&&逻辑与由左向右
||逻辑或由左向右
?:条件由右向左
= += -= *= /= %赋值...
逗号...

 其他:

(1), +=  ++

#include<stdio.h>

int main() {
	int a, b, c;
	a = 5;
	c = ++a;
	b = ++c, c++, ++a, a++;   //这里相当于b=a++
	b += a++ + c;  //优先级++ > + > +=
	printf("a=%d b=%d c=%d\n", a, b, c);
	return 0;
}

①注意优先级

②逗号表达式,取末尾计算的值

 (2)^  &

#include<stdio.h>
int get_sum(int m, int n) {
	int sum = 0;
	int a = m ^ n;
	//printf("%d\n", a);//调试判断是否正确
	while (a) {  //计算某整数二进制中1的个数
		a = a & (a - 1);
		sum++;
	}
	return sum;
}

int main() {
	int m = 0;
	int n = 0;
	printf("请输入两个整数\n");
	scanf("%d%d", &m ,&n);
	int ret=get_sum(m,n);
	printf("%d", ret);
	return 0;
}

 ①这里为判断两个整数中二进制的不同位的个数

②计算整数中1的个数的多少

 (3)sizeof()  

返回类型是无符号整型

#include<stdio.h>

//关于sizeof()返回的类型是无符号整型
int i;
int main() {
	i--;
	printf("%d\n", i);
	printf("%d\n", sizeof(i));
	if (i > (int)sizeof(i)) {//结果强制转换成整型
		printf(">\n");}
	else{
		printf("<\n");}

	if (i > sizeof(i)) {//正常结果
		printf(">\n");}
	else {
		printf("<\n");}

	printf("%u\n", i);//i无符号整型大小
}

 

 调试过程:

  • ①无符号整型进行比较会将结果强制转换成无符号整型,可以强制转换回整型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑的尾巴呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值