c语言操作符详解(1)

算术操作符

+,—,* / %

  1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。
  2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法
  3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数

移位操作符

右移操作符 >>
1.算数右移
右边丢弃,左边补原符号位
2.逻辑右移
右边丢弃,左边补0

通常都是算数右移,负数移位后还是负数
在这里插入图片描述
就是将一个数除于2

关于-1的右移 一位还是-1

int main() {
	int a = -1;
	//整数的二进制表示有:原码,反码,补码
	//存储在内存的是补码
	//正整数的三码是相同的
	//-1的原码 10000000000000000000001
	//求反码  111111111111111111111110
	//补码是反码加1  111111111111111111111111
	int b = a >> 1;
	printf("%d\n", b);
	return 0;
}

左移操作符跟右移差不多,就是将数乘于2
警告:不能移动负数位

位操作符

& 按位与
| 按位或
^ 按位异或
注:他们的操作数必须是整数

求一个整数存储在内存中的二进制中1的个数

# include<stdio.h>
int main() {
	int num = 0,count=0;
	scanf("%d", &num);
	int i = 0;
	for (i = 0; i < 32; i++) {
		if (1 == ((num >> i) & 1))
			count++;
	}
	printf("%d\n", count);
	return 0;
}

赋值操作符

单目操作符
! 逻辑反操作
— 负值
正值 +
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
– 前置、后置–
++ 前置、后置++
间接访问操作符(解引用操作符) *

#include <stdio.h>
void test1(int arr[])
{
printf("%d\n", sizeof(arr));//(2)
}
void test2(char ch[])
{
printf("%d\n", sizeof(ch));//(4)
}
int main()
{
int arr[10] = {0};
char ch[10] = {0};
printf("%d\n", sizeof(arr));//(1)
printf("%d\n", sizeof(ch));//(3)
test1(arr);
test2(ch);
return 0;
}
问:
(1)、(2)两个地方分别输出多少?
(3)、(4)两个地方分别输出多少?

40 10 4 4
第一个4乘于10
第二个 1乘于10
第三和四因为传进去的是一个首元素的地址,需要一个指针来接受,指针的大小为4和8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值