C语言易错点

1.选择语句switch
首先看一下格式
switch(表达式){
case 表达式的值:
表达式1
break;
case 表达式的值:
表达式2
break;
default:
表达式3
break;
}
因为这个语句平时用到的机会不是很多,碰到一些要求用switch的题目,一时间想不起来怎么用,今天就来总结以下。
举一个简单的例子,从键盘输入一个数字,判断它的等级,
60-80 及格,80-90良好,90-100优秀。

int fun()
{
	int score;
	printf("请输入成绩:");
	scanf("%d",&score);
	if(score>100 || score < 0)
	{
		return 0;
	}
	switch(score/10){     //这里是{}不是:
		case 10:     //这里的:容易遗漏,10不带括号
		printf("优秀");
		break;        //这里必须有break
		case 9:        //注意值与冒号的顺序
		printf("优秀");
		case 8:
		printf("良好");
		case(7 || 6):    //这么写是错误的
		printf("及格");
		defaultprintf("不及格");
		break;
}

2.右移
补符号位,符号位为1时,右移的时候看作0
比如 -12 >> 1
-12二进制 1000 1100
-12>> 1: 1000 0110
而 不是 : 1100 0110
3.异或^
两个数字异或,先将其化为二进制,相同位为0,不同位为1(这一点容易混淆)
4.十进制与二进制的相互转换
按权展开求和,概念就不赘述了 直接看例子(不考虑数据类型)
197 = 1* 2^7 +1* 2^6 + 0* 2^5 + 0* 2^4 + 0 *2^3+ 1 *2^2 + 0 *2 ^1+ 1 *2^0
197 = 128+64+0+0+0+4+0+1
二进制1 1 0 0 0 1 0 1
相反,二进制转十进制则是逆过程
1100 0101
2^0 + 2^2 + 2^6 + 2^7 = 1+4+64+128 = 197

下面说一下考虑数据类型时进制转换

比如 int 型179(int型数据占32位 不是8位)
二进制: 0000 0000 0000 0000 0000 0000 1011 0011
char 型 179(char型数据占8位,最高位为符号位)
二进制:1011 0011
十进制:①最高位为1,该数为负数②对其取反+1,添负号 得到的十进制为-71
若为正数,则直接转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值