C语言简易操作符

本文介绍了C语言中一些易混淆的操作符,包括除法、移位运算、按位取反、sizeof、前置和后置++、取地址与按位与的区别、赋值与比较运算符、逻辑与按位运算、三目运算符、逗号表达式以及结构体成员和数组下标引用的使用注意事项。对于复合运算可能导致的不同系统行为,作者建议避免使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此篇操作符只涉及一些容易犯错的问题

1./(除)

想将除数结果为浮点数。

①可将被除数或者除数变成浮点数,也可以两者都加

②如果想在后面加f,那么前面一定是个浮点数,否则编译时会出现问题

int main() {
	float a = 6 / 5;//本质还是整数相除得整数
	printf("%f\n",a);// 1 
	float b = 6.0 / 5.0;
	printf("%f", b);// 1.2
	return 0;
}

2.移位运算符

        以负数为例,其实只要知道怎么移,负数的补码如何转化为原码,问题就不大了

1)左移运算符<<(注意开口方向)

int main() {
	int a = -7;
	//左移
	int b = a << 1;
	printf("%d",b); // -14
	return 0;
}

2)右移运算符>>

①算术右移:右边丢弃,左边补符号位(编译器一般来说,运算的是这种)

②逻辑右移:右边丢弃,左边补0

int main() {
	int a = -9;
	//右移
	int b = a >> 1;
	printf("%d",b); //-5
	return 0;
}

注意: a的值是没有变的!

计算n二进制的补码有多少个1

判断n是否为2次方的数字

//计算n二进制的补码有多少个1
int countnum1(int n ) {
	int i = 0;
	int count = 0;
	for ( i = 0; i < 32; i++)
	{
		if (((n >> i) & 1) == 1) {
			count++;
		}
	}
	return count;
}
//另解
int countnum1(int n ) {
	int count = 0;
	while(n){
        if(n % == 1){
            count++;
        }
        n /= 2;
    }
	return co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值