C学习笔记4--操作符

1、算数操作符

加+,减-,乘*,除/,取余%

2、移位操作符(>>    <<)

左移操作符<<
规则:转化为补码进行移动,左边抛弃、右边补0(左移n位就是把原数值*2的n次方)

正数示例

#include<stdio.h>
void main()
{
    int a = 2;
    int b = a << 1;
    printf("%d\n", b);
}
//输出结果b为4

如示例中的2可以表示为

00000000000000000000000000000010

左边抛弃最开始的0右边再补上0

00000000000000000000000000000100

转为十进制就得到4

负数示例


#include<stdio.h>
void main()
{
	int a = -10;
	int b = a << 1;
	printf("%d\n", b);
}

输出结果b为-20

 右移操作符>>

规则:(右移有两种)

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

请添加图片描述

3.位操作符——按(二进制)位操作

将两个数化为二进制,再进行操作

操作数必须为整数

&--按二进制位与(对应的两个二进制位都取1时,得1,否则取0)

int a=3;
int b=5;
int c=a&b;
则c=1
a的二进制数位为00000000000000000000000000000011
b的二进制数位为00000000000000000000000000000101
c的二进制数位为00000000000000000000000000000001

|--按二进制位与(对应的两个二进制位都取0时,得0,否则取1)

int a=3;
int b=5;
int c=a|b;
则c=7
a的二进制数位为00000000000000000000000000000011
b的二进制数位为00000000000000000000000000000101
c的二进制数位为00000000000000000000000000000111

^--按二进制位异或(对应的两个二进制位相同时取0,不相同时取1)

int a=3;
int b=5;
int c=a^b;
则c=6
a的二进制数位为00000000000000000000000000000011
b的二进制数位为00000000000000000000000000000101
c的二进制数位为00000000000000000000000000000110

3.赋值操作符

=        +=        -=        *=        /=        &=        |=        >>=        <<=

a=a+6与a+=6相同

其余的操作符同理

4.单目操作符(只对一个数进行运算)

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

强制类型转换

! 逻辑反操作

int	main()
{
	int a = 5;
	printf("%d\n", !a);
	a = 0;
	printf("%d\n", !a);
	return 0;

}
输出结果为0 1

在C语言中,0代表假,非0代表真

!将假变成真,将真变成假。

~ 操作符

对一个数的补码进行按位取反(包括符号位)

++或--操作符

int	main()
{
	int a = 10;
	int b = a++;
	printf("%d %d\n", a, b);
	return 0;
}
结果为11 10
int	main()
{
	int a = 10;
	int b = ++a;
	printf("%d %d\n", a, b);
	return 0;
}
结果为11 11

当++前置时,先进行a=a+1,再进行b=a,

当++后置时,先进行b=a,再进行a=a+1,

--同理。

sizeof  求操作数的类型长度(以字节为单位)

sizeof是操作符,括号中表达式不参与计算

5.关系操作符

>=        >        <=         <         !=(用于测试不相等)          ==(用于测试相等)

6.逻辑操作符

&& 逻辑与    一假为假

||    逻辑或    一真为真

int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	if (a || b)
	{printf("1");}
	else
	{printf("0");}
	return 0;
}
若输入5 5,结果为1
若输入5 0,结果为1
若输入0 0,结果为0

7.条件操作符(三目操作符)

exp1 ? exp2 : exp3

相当于

if (exp1)
{exp2}
else
{exp3}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值