首页 > 其他分享 >C语言-运算符

C语言-运算符

时间:2024-06-13 23:12:42浏览次数:11  
标签:左到 操作数 C语言 运算符 按位 表达式 赋值

运算符

有几个操作数 就是 几元运算符

1、算术运算符

*运算符* *描述* *操作数个数 (几元运算符)* *组成的表达式的值* *副作用*
+ 正号 1 操作数本身
- 负号 1 操作数符号取反
+ 加号 2 两个操作数之和
- 减号 2 两个操作数之差
***** 乘号 2 两个操作数之积
/ 除号 2 两个操作数之商
% 取模(取余) 2 两个操作数相除的余数
++ 自增 1 (运算符在)操作数自增前或(运算符在)自增后的值 运算符所在位置对 操作数的副作用相同(都自增)
-- 自减 1 (运算符在)操作数自减前或(运算符在)自减后的值 运算符所在位置对 操作数的副作用相同(都自减)

注:一、对于 取余%

​ 1.表达式值得符号(正负)与第一个操作数(被除数)一致

​ 2.取余运算符的操作数必须是整数

​ 二、有副作用的运算符要求:操作数必须是变量的形式!!

2、关系运算符(比较运算符)

注:比较时,有符号转无符号之后再进行比较

*运算符* *描述* *操作数个数(几元运算符)* *表达式的值(int类型)* *副作用*
== 相等 2 0 或 1
!= 不等 2 0 或 1
< 小于 2 0 或 1
> 大于 2 0 或 1
<= 小于等于 2 0 或 1
>= 大于等于 2 0 或 1

3、逻辑运算符

*运算符* *描述* *操作数个数* *表达式的值* *副作用*
&& 逻辑与 2 0 或 1
|| 逻辑或 2 0 或 1
! 逻辑非 1 0 或 1

4、位运算符 (指的是二进制位)

*运算符* *描述* *操作数个数* *副作用*
& 按位与 2
| 按位或 2
^ 按位异或 2
~ 按位取反 1
<< 按位左移 2
>> 按位右移 2

5、赋值运算符

1、左边操作数必须是变量的形式,右边操作数可以是变量、常量、表达式

2、从右向左赋值

*运算符* *描述* *操作数个数* *表达式的值* *(对左边操作数)副作用*
= 赋值 2 左边操作数的值
+= 相加赋值 2 左边操作数的值
-= 相减赋值 2 左边操作数的值
*= 相乘赋值 2 左边操作数的值
/= 相除赋值 2 左边操作数的值
%= 取余赋值 2 左边操作数的值
<<= 左移赋值 2 左边操作数的值
>>= 右移赋值 2 左边操作数的值
&= 按位与赋值 2 左边操作数的值
^= 按位异或赋值 2 左边操作数的值
|= 按位或赋值 2 左边操作数的值

6、三元运算符

条件表达式? 表达式1: 表达式2;

表达式取值规则:
① a 成立,b 作为整个表达式的值
② a 不成立,c 作为整个表达式的值

7.其余运算符

,	二元运算符,表达式的值是第二个操作数的值
sizeof
&
*	——取值运算符
.	——成员选择(对象)
->	——成员选择(指针)

注:添加 () 提高优先级!

二、运算符优先级

(1)不要过多的依赖运算的优先级来控制表达式的执行顺序,这样可读性太差,尽量使用小括号来控制表达式的执行顺序。
(2)不要把一个表达式写得过于复杂,如果一个表达式过于复杂,则把它分成几步来完成。
(3)运算符优先级不用刻意地去记忆,总体上:一元运算符 > 算术运算符 > 关系运算符 > 逻辑运算符 > 三元运算符 > 赋值运算符。

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

标签:左到,操作数,C语言,运算符,按位,表达式,赋值
From: https://www.cnblogs.com/petard/p/18246929

相关文章

  • C语言数据结构实现-静态链表1-初始化
    《顺序表和链表优缺点》一节,我们了解了两种存储结构各自的特点,那么,是否存在一种存储结构,可以融合顺序表和链表各自的优点,从而既能快速访问元素,又能快速增加或删除数据元素。静态链表,也是线性存储结构的一种,它兼顾了顺序表和链表的优点于一身,可以看做是顺序表和链表的升级版。使......
  • 第一个c语言程序
    我们有两种方式从计算机获得信息:一是看屏幕上的文字、图片、视频等,二是听从喇叭发出来的声音。让喇叭发出声音目前还比较麻烦,我们先来看看如何在屏幕上显示一些文字吧。在屏幕上显示文字非常简单,只需要一个语句,例如,下面的代码会让屏幕显示出“C语言中文网”:puts("C语言中文网......
  • 3个月搞定计算机二级C语言!高效刷题系列进行中
    前言大家好,我是梁国庆。计算机二级应该是每一位大学生的必修课,相信很多同学的大学flag中都会有它的身影。我在大学里也不止一次的想要考计算机二级office,但由于种种原因,备考了几次都不了了之。这一次我想换个目标!备考计算机二级C语言今天山东省考试院发布了关于2024年9月全......
  • C语言练习题05
    练习1:使用二维数组计算杨辉三角#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){intm,i,j;printf("请输入你所要打印的杨辉三角的列数:\n");scanf("%d",&m);putchar(10);int......
  • C语言练习题04
    练习1:输入一个5个元素的一维数组,实现冒泡排序。#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){ inttemp; inta[5]={0}; for(inti=0;i<5;i++) { printf("请输入一个数:\n"); scanf("%d"......
  • c语言编译器的分类
    前言在上节《C语言编译和链接》中我们已经讲解了C语言编译器的概念,由于C语言的历史比较久,而且早期没有规范,整个计算机产业也都处于拓荒的年代,所以就涌现了很多款C语言编译器,它们各有特点,适用于不同的平台,本节就来给大家科普一下。我们分两部分介绍C语言的编译器,分别是......
  • C语言题目:排序问题2
    题目描述将十个数进行从大到小的顺序进行排列输入格式十个整数输出格式以从大到小的顺序输出这个十个数样例输入12345678910样例输出10987654321代码解析1.引入头文件代码首先引入了stdio.h头文件,这是C语言标准输入输出库,用于处理输入输出......
  • 【C语言】文件操作
    1.为什么需要文件操作2.文件的打开与关闭3.文件指针4.文件的打开与关闭5.fopen6.函数声明7.文件的打开方式8.函数使用9.fclose10.函数声明11.函数使用12.文件的顺序读写13.fgetc与fputc14.函数声明15.函数使用16.fgets与fputs17.函数声明18.函数使用19.fscan......
  • 10.C语言for循环和跳出循环的知识点
    C语言for循环、continue和break知识点3.13for循环3.14for的一些用法3.15continue和break的作用3.16嵌套的规律3.17—作业3.13for循环概述和while的对比#include<stdio.h>intmain(){ intdata; //for(条件附初值;判断临界点;条件改变)//判断、执行循......
  • 用于将字节进行base64编码或解码(C语言实现)
    V1.02024年6月13日发布于博客园目录base64.hbase64.c基本原理见代码注释!base64.h#ifndef_BASE64_H#define_BASE64_H/***@filename:base64.h*@brief:用于将字节进行base64编码或解码*@author:[email protected]*@date:2024年6......