操作符( ˃᷄˶˶̫˶˂᷅ )

本文详细介绍了C语言中的各种操作符,包括算术、移位、位、赋值、单目、逻辑、关系及条件操作符。通过实例解释了它们的工作原理和使用方法,如位移操作符如何改变二进制位,位操作符如何进行按位与、异或和或运算,以及赋值操作符的复合使用等。此外,还提到了前置和后置自增、自减操作符的区别,以及强制类型转换和逻辑运算在条件判断中的应用。
摘要由CSDN通过智能技术生成

操作符

算术操作符

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
a是整型,32bit。

所以12二进制是 00000000000000000000000000001100

向左一位 00000000000000000000000000011000(C语言规定末位补0)

二进制11000转化后为24

位操作符

在这里插入图片描述
& 按(二进制)位与 对应的二进制有0就为0

^ 按(二进制)位或 对应的二进制有1就为1

| 按(二进制)位异或 对应的二进制相同就为0,相异则为1

int main()
{
    int a = 3;
    int b = 5;
    int c = a & b;
    return 0;
}

3的二进制00000000000000000000000000000011

5的二进制00000000000000000000000000000101

得出是00000000000000000000000000000001

赋值操作符

在这里插入图片描述
赋值

int a = 10;//创建一个变量同时给一个值,是初始化
float b = 0.0;
a = 20;//有了变量之后再给他一个值,是赋值
b = 9.95;//直接写出的浮点数默认是double类型
//9.95f-指定是float类型

复合赋值

int a = 0;
a = a + 5;
a += 5;//这俩个是一个意思

单目操作符(只有一个操作数的操作符)

3 + 5;//左右都有操作数,+是双目操作符

在这里插入图片描述

int a = 2;//0为假,非0为真 a是真的
int b = 3;//为真

if (a)//a为真,打印love
{
   printf("love");
}
if (!b)//!b为假,不打印love
{                                                                                                                                                                                                           
   printf("love");
}

~ 按(二进制)位取反 (二进制位是1就取0,是0就取1)

整数在内存中存放的是二进制的补码,整数二进制的表达方式有三种

原码:直接按照数字的正负转换的二进制

(对于有符号数,二进制最高位是符号位。最高位是0,表示正数;最高位是1,表示负数

反码:原码的符号位不变,其他位按位取反

补码:反码加1(末位加1)

正整数的原码 反码 补码相同。 负整数的原码 反码 补码需要计算

int a = 0;//整数在内存中存放的是二进制的补码
//00000000000000000000000000000000 - 补码
//11111111111111111111111111111111 - ~a 取反后的结果仍为补码
//打印出来的是原码,所以要从补码变回原码(减一后按位取反)
//10000000000000000000000000000001 - 原码
printf("%d",~a);//打印出来为-1

++ - - 前置后置

int a = 10;
int b = a++;//后置++,b先使用,a再++(加一)
printf("%d",a);//a是11
printf("%d",b);//b是10
int c = 10;
int d = ++c;//前置++,c先++,d再使用
printf("%d",c);//c是11
printf("%d",d);//d是11

( ) 强制类型转换

int a =int)3.14//3.14是double类型加上(int)可以强制转换
printf("%d",a);//打印出来是3

关系操作符

在这里插入图片描述

逻辑操作符

在这里插入图片描述
&& 并且,俩个条件都要满足
|| 或,有一个满足就行

if(a > 20) && (b > 22)
{
    printf("haha");
}

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

在这里插入图片描述
exp1为真,则表达式的结果是exp2的结果;
exp1为假,则表达式的结果是exp3的结果.

int a = 2;
int b = 1;
int c = 0;
c = (a > b) ? (a) : (b);
printf("%d",c);//打印出来为2

逗号表达式

从左向右依次计算,整个表达式的结果是最后一个表达式的结果,即expN的结果
在这里插入图片描述
下标引用、函数调用和结构成员
在这里插入图片描述

arr [4] //[]的操作数是arr和4
void test();//viod是无,表示test函数调用完之后什么都不返回
{
     printf("ha");
}
int main()
{
    int a = 0;
    printf("%d",a);
    test();//()这里表示test函数被调用,操作数是test
    return 0}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值