首页 > 其他分享 >C语言-教案04(从小白到劝退之运算符)

C语言-教案04(从小白到劝退之运算符)

时间:2024-03-22 12:33:01浏览次数:18  
标签:逻辑 白到 04 int 运算符 左向右 表达式 赋值

算术运算符

运算符

功能说明

举例

+

加法,一目取正

a+b

-

减法,一目取负

a-b

*

乘法

a*b

/

除法

a/b

%

取模(求余)

a%b

++

自加1

a++, ++b

--

自减1

a--, --b

  • 关注点:
  1. 减号也是负号,比如 -a 是取变量 a 的相反数。
  2. 取模运算要求左右两边操作数必须是整型数据。
  3. 自加和自减运算不仅可以对整型操作,也可以对浮点数、指针操作。
  • 前缀自加自减运算:先进行自加自减,再参与表达式运算
  • 后缀自加自减运算:先参与表达式运算,在进行自加自减
int a = 100;
int b = 200;

int c = ++a; // a先自加1,变成101;然后再赋值给c,因此c等于101
int d = b++; // b先赋值给d,因此d等于200;然后b自加1,变成201

关系运算符

运算符

功能说明

举例

>

大于

a > b

判断a是否大于b

>=

大于或等于

a >= 5

判断a是否大于或等于5

小于

3 < x

判断3是否小于x

小于或等于

x

判断x是否小于或等于y+1

==

等于

(x+1) == 0

判断x+1是否等于0

!=

不等于

c != ‘\0’

判断c是否不等于'\0'

  • 关注点:
  1. 关系运算符用于判断运算符两边的表达式是否满足给定的大小条件。
  2. 由关系运算符组成的表达式称为关系表达式,其值为布尔型。
  3. 判断是否相等是双等号==,而不是一个等号。

逻辑运算符

运算符

功能说明

举例

!

逻辑反

!(x==0)

&&

逻辑与

x>0 && x

||

逻辑或

y10

  • 运算规则:
  1. 逻辑反:将逻辑真、假翻转,即真变假,假变真。
  2. 逻辑与:将两个关系表达式串联起来,当且仅当左右两个表达式都为真时,结果为真。
  3. 逻辑或:将两个关系表达式并联起来,当且仅当左右两个表达式都为假时,结果为假。

  • 特殊规则:
  1. 在逻辑与运算中,如果左边表达式的值为假,那么右边表达式将不被执行。
  2. 在逻辑或运算中,如果左边表达式的值为真,那么右边表达式将不被执行。

位运算符

运算符

名称

举例

功能说明

~

位逻辑反

~a

将变量 a 中的每一位取反

&

位逻辑与

a & b

将变量 a 和 b 逐位进行与操作

|

位逻辑或

a | b

将变量 a 和 b 逐位进行或操作

^

位逻辑异或

a ^ b

将变量 a 和 b 逐位进行异或操作

左移

a

将变量 a 中的每一位向左移动4位

>>

右移

x >> n

将变量 x 中的每一位向右移动4位

  • 位运算符操作的对象是数据中的每一位
  • 运算规则:
    • 位逻辑反、位逻辑与、位逻辑或拥有与逻辑运算相似的规则和一样的真值表
    • 异或运算:相同为0,不同为1
    • 移位运算:移出去的不要,空出来的补零

特殊运算符

  • 赋值运算符
    • 不能对常量赋值,只能对变量赋值
    • 不能对数组赋值
    • 可以连续赋值,顺序从右到左
int a, b;
int x[5];

a = 100; // 对变量 a 赋值,正确
3 = 100; // 对常量 3 赋值,错误!
x = 123; // 对数组 b 赋值,错误!

// 连续赋值
a = b = 50; // 先将 50 赋给 b,再将 b 的值赋给 a,正确
  • 复合赋值符
    • 当左右两边有相同的操作数时,采用复合赋值符不仅直观,且能提高运算效率
    • 除了下述10个复合运算符之外,生造别的复合运算符是非法的
// 加减乘除:
a += n; // 等价于 a = a+n;
a -= n; // 等价于 a = a-n;
a *= n; // 等价于 a = a*n;
a /= n; // 等价于 a = a/n;

// 求余:
a %= n; // 等价于 a = a%n;

// 位运算:
a &= n; // 等价于 a = a&n;
a |= n; // 等价于 a = a|n;
a ^= n; // 等价于 a = a^n;
a >>= n; // 等价于 a = a>>n;
a <<= n; // 等价于 a = a<<n;
  • 条件运算符
    • 唯一需要三个操作数的运算符
    • 语法:表达式1 ? 表达式2 : 表达式3
    • 释义:当表达式1为真时,取表达式2,否则取表达式3
    • 举例:
int a = 100;
int b = 200;
int m = (a>b) ? a : b;  // 如果 a>b 为真,则 m 取 a 的值,否则取 b 的值
  • sizeof运算符
    • 含义:计算指定数据类型或者变量所占据内存的字节数
    • 语法:sizeof(类型) 、sizeof(变量) ,计算变量的字节数时圆括号可以省略
    • 举例:
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long double));

int a[5];
printf("%d\n", sizeof(a));
printf("%d\n", sizeof a);
  • return运算符
    • 含义:退出某个函数
    • 语法:必须出现在函数体内,可以带函数对应类型的数据
    • 举例:
int main()
{
    return 0;
}

优先级与结合性

  • 当表达式中出现不同的运算符时,根据优先级来决定谁先执行,比如先乘除,后加减
  • 当表达式中出现多个相同优先级的运算符时,根据结合性来决定谁先运行,比如从左到右

优先级

运算符及其含义

结合性

高优先级

1

[ ] ( ) . -> 后缀++ 后缀--

从左向右 

2

前缀++ 前缀-- sizeof & ^ + - ~  !

从右向左

3

强制类型转换

从右向左

4

* / (算术乘除)  %

从左向右

5

+ - (算术加减)

从左向右

6

> (位移位)

从左向右

7

<    >=

从左向右

8

==  !=

从左向右

9

& (位逻辑与)

从左向右

低优先级

10

^ (位逻辑异或)

从左向右

11

| (位逻辑或)

从左向右

12

&&

从左向右

13

||

从左向右

14

?:

从右向左

15

=  ^=  /=  %=  +=  -= 

>=  &=  ^=  |=

从右向左

16

,

从左向右

优先级与结合性

标签:逻辑,白到,04,int,运算符,左向右,表达式,赋值
From: https://blog.csdn.net/LINUX823/article/details/136927399

相关文章

  • Raku教程值运算符详解
    文章目录简介数值和字符串运算比较类型转换构造数据高级运算符简介raku中提供了非常多的运算符操作,除了常见的数值和逻辑上的计算之外,对于类型转换、数据生成等常用操作,也提供了相应的运算符。此外,运算符作用在变量或字面量的不同位置,可能会产生不同的结果,据此可将......
  • Ubuntu2204 GUI root用户无法登录的处理方法
    Ubuntu2204GUIroot用户无法登录的处理方法背景今天上午同事cloneubuntu2204之后想通过GUI登录修改IP以及进行一些安全设置发现root用户登录输入密码后就会返回登录界面.会进入一个无线死循环的额状态.这里记录一下进行地址设置和解决root登录的问题.解决IP地址的设......
  • 代码随想录算法训练营第十七天| 110. 平衡二叉树 257. 二叉树的所有路径 404. 左叶
    110.平衡二叉树https://leetcode.cn/problems/balanced-binary-tree/description/publicbooleanisBalanced(TreeNoderoot){intbalance=balance(root);returnbalance==-1?false:true;}publicintbalance(TreeNodenode){i......
  • VHDL实现2048游戏及仿真
    设计2048游戏的思路如下:1.确定数据表示:在设计过程中,我们需要确定如何表示游戏的棋盘状态和移动方向。一种常见的表示方法是使用一个二维数组来表示棋盘,每个单元格可以存储一个数字(用4个bit表示)。移动方向可以使用一个2位的向量表示。2.定义游戏规则:了解2048游戏的规则是非......
  • verilog设计2048游戏及仿真
    设计一个简化版的2048游戏Verilog代码需要考虑以下几个关键方面的设计思路:1.**棋盘设计**:  -使用一个4x4的二维数组表示2048游戏的棋盘,每个位置可以存储一个数字,采用适当的位宽存储游戏中可能出现的数字。  2.**游戏状态设计**:  -使用状态机来管理游戏的各......
  • ABC045
    A梯形的面积公式#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)#definepiipair<int,int>#definelllonglong#definedbdouble#define......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    704.二分查找有顺序2.左右双指针通过中间位大小来判断指针移动难点:边界防止溢出错误:mid=left+(right-left)//2Complexity:O(log(n))classSolution:defsearch(self,nums:List[int],target:int)->int:#sortedlist#binary......
  • opengl日记7-ubuntu20.04开发环境opengl拓展glfw和glad环境搭建
    文章目录ubuntu中安装opengl核心环境安装glfw安装glad测试验证程序vscode的task.json配置如下note参考ubuntu中安装opengl核心环境可执行如下命令进行整体安装:sudoapt-getinstalllibgl1-mesa-dev*或者单独安装1、提供编译程序必须软件包的列表信息sudoapt......
  • 前端基础之JavaScript运算符
    一、什么是运算符运算符,顾名思义就是在运算中的符号,例如加法中的”+“就是一个运算符。严谨来说,运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。二、运算符的分类JavaScript中的运算符可以分为多种类型,包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算......
  • ubuntu18.04在下载编译Realsense-ros遇到的问题
    要注意的是,我是用小鱼的一键安装ros安装的ros,链接可以参考我的一篇文章开头有:ubuntu18.04系统中运行./build_ros.sh的时候遇到报错-CSDN博客我遇到的问题是csdn上搜不到的问题:CMakeErrorat/opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:100(message): ......