部分操作符用法

算数操作符

/ :除操作符

int main()
{
int a = 3 / 2;
printf("%d\n",a);
return 0;
}

除号两边的操作数都是整数,执行的是整数除法。如果要执行小数除法,必须保证除法的两端至少有一边为小数。

%:取模操作符

int main(0
{
int a = 9 % 2;
printf("%d\n",a);
return 0;
}

取模操作符两边的操作数必须都是整数。

%n它的取值范围是0~n-1。

移位操作符(操作二进制位)

<<左移操作符

>>右移操作符 (移位操作符的操作数必须是是整数)

首先要先了解二进制位

整数的二进制表示有3种形式:原码,反码,补码。

正整数的原码,反码,补码是相同的

负整数的原码,反码,补码是要计算的

以5举例:

int a=5;

00000000000000000000000000000101   原码

00000000000000000000000000000101   反码

00000000000000000000000000000101   补码

  int a=-5;

10000000000000000000000000000101   原码

111111111111111111111111111111111010   反码(原码的符号位不变,其他位按取反得到的就是反码)

111111111111111111111111111111111011   补码(反码+1就是补码)

第一位是它的符号位。0表示正数,1表示负数。

整数在内存中存储的是补码的二进制。

左移:

int main()
{
int a=5;
int b=a<<1;
printf("%d\n",a);
printf("%d\n",b);
return 0;
}

左边丢弃,右边补0。左移之后值变为10。

如果a为-5:

 

 左移后值为-10。

因为我们打印出来的值是由原码显示的,而存储的是补码,所以当值为负数时,我们要先将补码进行移位,再由补码推出我们的原码就是输出的值。

 

右移:

右移基本与左移相同,它的位移规则为:

算术右移:右边丢弃,左边补原符号位。

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

到底是算术右移还是逻辑右移取决于翻译器。

警告:对于移位运算符,不要移动负数位,这个是标准未定义的。 

位操作符

 &  按位与  对应的二进制位都为1则为1,否则为0

  |  按位或  对应的二进制位都为0则为0,否则为1

  ^按位异或  对应的二进制位相同为0,相异为1

注:他们的操作数必须是整数。


单目操作符

sizeof

sizeof是一个操作符,不是函数,用来计算类型创建的变量所占内存的大小,单位是字节。

int main()
{
int a = 10;
short s = 0;
printf("%d\n", sizeof(s = a + 2));    2
printf("%d\n", s);    0         
return 0;
}

这里输出的结果是2和0,原因是sizeof中的表达式不参与计算。

注:sizeof在自定义的函数中不能正常工作,因为数组作为参数传递的话,数组名会隐式转换为指针,sizeof(数组名)的话,计算的就是指针类型的大小,指针类型的大小是取决于系统的,32位系统指针大小为4 64位系统指针大小为8。

#include<stdio.h>
void test1(int arr[])
{
printf("%d\n",sizeof(arr));   4
}
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));    40
printf("%d\n",sizeof(ch));     10 
test1(arr);
test(ch);
}

~:对二进制位按位取反(所有位,包括符号位)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值