IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言中十分详细的操作符详解 -> 正文阅读

[C++知识库]C语言中十分详细的操作符详解

目录

?

一、算数操作符

二、移位操作符

三、位操作符

四、赋值操作符

五、单目操作符

六、关系操作符

七、逻辑操作符

八、条件操作符

?九、逗号表达式

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

十一、操作符的优先级


你是否觉得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

六、关系操作符

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

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

例如:

#include<stdio.h>
int main()
{
    int a=10;
    if(a<10)
    printf("Hello\n");
    else
    printf("hehe\n");
    return 0;
}

运行结果:

hehe

==意思为相等,写代码的时候漏了个=就得不到想要的结果

int a=5;
if(5==a)
如果将数字放左边变量放右边的话,编译器就会报错就能发现少写了一个=

!=为不等于的意思

七、逻辑操作符

1.逻辑与&&

&&的左右两边的条件都需要成立才能执行

例如:

#include<stdio.h>
int main()
{
    int a=5;
    int b=4;
    if(a==5&&b==4)//需要两边都为真才可以执行
    printf("hehe\n");
    return 0;
}

运行结果:

hehe

2.逻辑或||

||的左右两边条件只需一边成立即可执行

例如:

#include<stdio.h>
int main()
{
    int a=5;
    int b=1;
    if(a==5||b==4)
    printf("Hello");
    return 0;
}

运行结果:

Hello

八、条件操作符

条件操作符也叫三目操作符

表达式1?表达式2:表达式3

看表达式1是否成立,如果成立的话执行表达式2,不成立的话执行表达式3

例如:
?

#include<stdio.h>
int main()
{
    int a=3;
    int b=7;
    int c=0;
    c=a>b?a:b;//如果a>b的话则c=a,否则c=b
    printf("c=%d\n",c);
    return 0;
}

运行结果:

c=7

?九、逗号表达式

表达式1,表达式2,表达式3……表达式N

表达式从左向右依次进行计算,整个表达式的结果为最后一个表达式的计算结果

例如:

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

运行结果:

d=19

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

[]为下标引用操作符,用于数组当中,操作数为数组名和下标

例如:

#include<stdio.h>
int main()
{
    int arr[10]={1,2,3,4,5,6,7,8,9,10};
    printf("arr数组中下标为3的值为%d\n",arr[3]);
    return 0;
}

运行结果为:

arr数组中下标为3的值为4

数组的下标从0开始

函数调用操作符(),操作数为函数名和()里的内容

例如:

max(int n,int m)
{
    return n>m?n:m;//如果n大于m返回值为n,否则返回m
}
#include<stdio.h>
int main()
{
    int a=3;
    int b=7;
    int c=max(a,b);//调用函数max,将a和b的值传过去
    printf("c=%d\n",c);
    return 0;
}

运行结果:

c=7

点运算符.和箭头操作符->可以选择结构或联合中的成员

.和->的左边必须为结构或联合,右边必须为结构或联合中的成员

十一、操作符的优先级

优先级运算符名称或含义使用形式结合方向说明
1[]数组下标数组名[常量表达式]左到右
()圆括号(表达式)/函数名(形参表)
.成员选择(对象)对象.成员名
->成员选择(指针)对象指针->成员名
2-负号运算符-常量右到左单目运算符
(type)强制类型转换(数据类型)表达式
++自增运算符++变量名单目运算符
--自减运算符--变量名单目运算符
*取值运算符*指针变量单目运算符
&取地址运算符&变量名单目运算符
!逻辑非运算符!表达式单目运算符
~按位取反运算符~表达式单目运算符
sizeof长度运算符sizeof(表达式)
3/表达式/表达式左到右双目运算符
*表达式*表达式双目运算符
%余数(取模)整型表达式%整型表达式双目运算符
4+表达式+表达式左到右双目运算符
-表达式-表达式双目运算符
5<<左移变量<<表达式左到右双目运算符
>>右移变量>>表达式双目运算符
6>大于表达式>表达式左到右双目运算符
>=大于等于表达式>=表达式双目运算符
<小于表达式<表达式双目运算符
<=小于等于表达式<=表达式双目运算符
7==等于表达式==表达式左到右双目运算符
!=不等于表达式!= 表达式双目运算符
8&按位与表达式&表达式左到右双目运算符
9^按位异或表达式^表达式左到右双目运算符
10|按位或表达式|表达式左到右双目运算符
11&&逻辑与表达式&&表达式左到右双目运算符
12||逻辑或表达式||表达式左到右双目运算符
13?:条件运算符表达式1? 表达式2: 表达式3右到左三目运算符
14=赋值运算符变量=表达式右到左
/=除后赋值变量/=表达式
*=乘后赋值变量*=表达式
%=取模后赋值变量%=表达式
+=加后赋值变量+=表达式
-=减后赋值变量-=表达式
<<=左移后赋值变量<<=表达式
>>=右移后赋值变量>>=表达式
&=按位与后赋值变量&=表达式
^=按位异或后赋值变量^=表达式
|=按位或后赋值变量|=表达式
15,逗号运算符表达式,表达式,…左到右从左向右顺序运算

终于写完了,操作符的讲解到此就结束啦,你是不是对其有了更多的认识呢

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 12:51:59  更:2022-01-16 12:52:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:01:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码