C语言中十分详细的操作符详解

本文详细介绍了C语言中的各种操作符,包括算数操作符、移位操作符、位操作符等,通过实例帮助理解每种操作符的功能及使用场景。

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

目录

 

一、算数操作符

二、移位操作符

三、位操作符

四、赋值操作符

五、单目操作符

六、关系操作符

七、逻辑操作符

八、条件操作符

 九、逗号表达式

十、下标引用,函数调用,结构成员

十一、操作符的优先级


你是否觉得C语言中的操作符就像一个与你相距万里的陌生人,对它感觉很陌生,不太会使用

下面就来讲讲如何让你和它做好朋友

一、算数操作符

1.加法操作符+

int a=2+3//右边的2和3相加后赋值给整形变量a,所以a的值为5

2.减法操作符-

int a=3-2//右边的3和2相减后赋值给整型变量a,所以a的值为1

3.乘法操作符*

int a=2*3//右边的3和2相乘后赋值给整型变量a,所以a的值为6

4.除法操作符/

int a=7/3//右边7除以3 商2余1,将商赋值给整型变量a,所以a的值为2

5.求余操作符%

int a=7%3//右边7模3 商2余1,将余数赋值给整型变量a,所以a的值为1

二、移位操作符

1.左移操作符<<

以该数字的补码向左移动相应的位数,高位舍弃,低位补0,其结果相当于乘于2的n次方,n为左移的位数

2.右移操作符>>

以该数字的补码向右移动相应的位数

如果是带有符号位进行移位,低位舍弃,在其高位补充原符号位,即正数补0,负数补1

如果是没带符号位进行移位,低位舍弃,在其高位补0,相当于除以2的n次方

三、位操作符

#include<stdio.h>
int main()
{ 
    int a = 7;
    int b = 11;
    printf("a&b=%d\n",a&b);
    printf("a|b=%d\n",a|b);
    printf("a^b=%d\n",a^b);
    return 0;
}

运行结果如下:

a&b=3
a|b=15
a^b=12

将a和b转化成二进制,对齐a和b的位数后再进行比较

1.按位与&

相同的位数两者都为1则按位与才为1,否则为0

2.按位或|

相同的位数两者之中只要有一者为1则按位或才为1,否则为0

3.按位异或^

相同的位数两者之中只要数字不同则按位异或才为1,两者数字相同则为0

最后再将按位与后的二进制结果转化为十进制

四、赋值操作符

1.=

例如:

定义一个整型变量a对其赋值5

int a=5;

2.+=,-=,*=,/=,&=,|=,^=

例如:

a+=7;相当于a=a+7;

a<<=2;相当于a=a<<2;

其他的赋值操作符都一样

五、单目操作符

1.!

该操作符为逻辑反操作符,能够将非0值转化为0,将0转化为1,即真变假,假变真

#include<stdio.h>
int main()
{
    int flag=0;
    while(!flag)//!flag为1,1为真,进入循环
    {
        printf("Hello\n");
        break;
    }
    return 0;
}

2.~

按位取反操作符能够将二进制的数字1变成0,0变成1,符号位也会改变

3.++,--

前置++:先++,后使用.

#include<stdio.h>
int main()
{
    int a=10;
    int b=++a;
    printf("a=%d  b=%d\n",a,b);//a=11  b=11
    return 0;
}

后置++:先使用,后++.

#include<stdio.h>
int main()
{
    int a=10;
    int b=a++;
    printf("a=%d  b=%d\n",a,b);//a=11  b=10
    return 0;
}

--和++一样的用法

4.sizeof也是一个操作符,并不是函数,用来计算操作数的类型长度(单位:字节)

#include<stdio.h>
int main()
{
    printf("%d\n", sizeof(int));//4个字节
    printf("%d\n", sizeof(short));//2个字节
    printf("%d\n", sizeof(long));//4个字节
    printf("%d\n", sizeof(long long));//8个字节
    printf("%d\n", sizeof(float));//4个字节
    printf("%d\n", sizeof(double));//8个字节
    return 0;
}

5.(类型)为强制类型转换操作符

有的浮点型数据用%d打印十进制的数字就会丢失数据,就要将浮点型数据强制转换成整型数据

6.&和*

&为取地址操作符,在进行输入数据的时候就要加上,有了地址才能将数据通过键盘输入进去,如果操作数p的类型为M,则表达式&p为指向M类型的指针

*为解引用操作符,也叫取值操作符,它的操作数必须为指针,如果p为指针,则*p为p指向的对象或函数,当是指向对象时,*p即为左值

如果p为一个整形变量,例如:int p=2;则*&p相当于p,&*p却是非法的,因为*p相当于取了一个内存地址为2的值

7.正值+,负值-

int a=10;

int b=-a;

b就等于-10

六、关系操作符

>,>=,<,<=,==,!=

可以用来比较大小和判断条件是否成立

例如&#x

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山涧晴岚.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值