【C语言疯狂讲义】(三)C语言运算符
1、运算符:
连接两个操作数(常量、变量)的符号
用运算符依照一定的规则连接的式子称为表达式
运算符的分类:
1)操作数的个数:
单目运算(++ sizeof !)
双目运算符:。。。
。
三目运算符:
?:
2) 功能:
算术运算符、关系和逻辑运算、位运算
2、算术运算符
1)什么东西?
进行算术的运算,总计5个
+ - * / %
双目运算符
a+b a*3 b/5 10%3
2)优先级
* / 3
+ - 4
乘除的优先级要高于加减的
3)结合性
前提:优先级同样
左结合:从左到右结合计算
int a=3,b=2;
a+b*3/1-5
--> a+6-5
--> 4
4)注意事项
% 求余数
m%n求余数
m = 0 结果是 0
n = 0 结果无意义,n不能为0
m > n 结果正常取余数
m < n 结果是 m
3、赋值运算符
1)什么东西?
= 作用:把等号的右側的值(常量、表达式)赋值给等号左边的变量
注意:等号的左边一定要是变量
a+2 = b+2 (错误的) 10=a(错误的)
a = 2; b=a+3;
2)优先级
14
3)结合性
右结合:从右至左
int a,b,c,d;
a = b = c = d = 0;
int a=b=c=d=0;(错误的)
4)注意事项
复合赋值运算符:总共同拥有5个
+= a+=2;--> a = a+2;
-= a-=2;--> a = a-2;
*= 。。
。。
/=
%=
4、自增、自减运算符
1)什么东西?
++ -- 相当于让运算符连接的操作数自身的值+1或者-1
格式:
变量名++ ++ 变量名
变量名-- --
变量名
让变量的值自己主动的+1或者-1
2)优先级
2
3)结合性
右结合
(a++)+(++b)
-a++ --> -(a++)
4)注意事项
技巧:
int a=3; a++ ++a
表达式的值 3 4
a变量的值 4 4
假设a在++符号的前面。先取出a的值作为表达式的值,然后a自身值+1
口诀:先用后变
假设a在++符号的后面,先让a自身值+1,然后取出a的值作为表达式的值
口诀:先变后用
5、sizeof运算符
1)什么东西?
计算常量、变量、数据类型在我们内存中占用的字节数
2)使用方法
常量上
: sizeof(10) sizeof(2.3) sizeof('a')
---> sizeof 10 sizeof 2.3
sizeof("a") //2
'
变量上:int a; sizeof(a);
数据类型上:sizeof(int) sizeof(float) sizeof(char)
3)结合性
4)注意事项
sizeof不是第一个函数,是一个运算符
sizeof('a') 4个字节。字符型的常量在C标准的编译中用int型存储的
6、关系运算符
真假性问题:
全部的数值都有真假性
非0
就真(1) 0就是假(0)
1)什么东西?
推断操作数之间的关系,总计有6个
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
双目运算符
a>3 b>a+2; 1>2
2)优先级
6
3)结合性
左结合
a = 1>2<3>0;
((1>2)<3)>0
1>0
4)注意事项
7、逻辑运算符
1)什么东西?
很多其它的时候是推断多个条件是否同一时候成立(同一时候为1)
双目运算符
&& 逻辑与&&符号两边的表达式都必须为真
口诀:同真为真
一假则假
|| 逻辑或 ||符号两边的表达式有一个为真。结果就为真
口诀:同假为假
一真则真
! 逻辑取反
(单目运算。右结合)
口诀:真变假
假变真
2)优先级
! 2
&& 11
|| 12
3)结合性
左结合
4)注意事项
短路的问题:
掌握口诀即可
a && b+2 || b-5
8、条件运算符
1)什么东西?
?
:
进行了一个简单的推断
a>b?a:b -->取出a、b中的最大值
先推断a>b是否为真:
假设为真:a的值作为条件表达式的值返回
假设为假:b的值作为条件表达式的值返回
2)优先级
13
3)结合性
左结合
(num1>num2?num1:num2)>num3 ?
num1>num2?num1:num2 :num3
4)注意事项
【C语言疯狂讲义】(三)C语言运算符的更多相关文章
- 【C语言疯狂讲义】(七)C语言进制转换
1.计算机中的进制 2进制:逢二进1 0 1 8进制:逢八进1 0 1 2 3 4 5 6 7 10进制:逢十进1 默认的进制 0 - 9 16进制:逢十六进 ...
- [Java入门笔记] Java语言基础(三):运算符
简介 运算符是一种特殊的符号,运算符是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号,运算符和操作数的有效组合称为表达式. Java中运算符主要分为以下几类: 赋值运算符 算术运算符 关 ...
- 【C语言疯狂讲义】(八)C语言一维数组
1.数组的基本概念: 同样类型 若干个 有序 由若干个同样类型的数据组成的有序的集合 有序:存储地址连续 下标连续 数组名:用来存放数组首地址的变量 数组元素:构成数组的每个数据 数组的 ...
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...
- 《玩转D语言系列》三、轻松大跃进,把它当C语言先用起来
前面说过,本系列文章的前提是您懂C语言,懂面向对象中的一些概念,如果没有任何变成基础,从零开始学习D语言将是一个漫长的过程,因为很多概念都要重新诠释,让一个没有基础的人经过漫长的学习过程,然后还找不到 ...
- Swift语言学习(三)基础操作符
操作符是用于检测.更改或者组合值的特殊符号或短语.例如,加法操作符 (+) 将两个数字加到一起 (如 let i = 1 + 2).更复杂的例子包括逻辑与操作符 && (如 if en ...
- 你想了解的《javaScript语言精粹》(三)
# javaScript语言精粹 # 第三章 对象 - javaScript 数据类型 1. 基础数据类型 Number String Boolean Undefined N ...
- 数据结构与算法分析——C语言描述 第三章的单链表
数据结构与算法分析--C语言描述 第三章的单链表 很基础的东西.走一遍流程.有人说学编程最简单最笨的方法就是把书上的代码敲一遍.这个我是头文件是照抄的..c源文件自己实现. list.h typede ...
- 三种语言(c++、as、lua)中函数的差异性
对于不同的语言, 尤其是静态语言和动态语言, 对于函数的定义(即如何看待一个函数)和处理截然不同.具体来说可以分为两类: 1.将函数视为第一类型值, 即函数和其他的对象一样, 都是语言中一个普通的对象 ...
随机推荐
- linq连接sqlite数据库(linq to sqlite) .net3.5
http://www.cnblogs.com/xianyin05/archive/2012/12/23/2829905.html using Models; using System; using S ...
- #423 Div2 C
#423 Div2 C 题意 给出 n 个字符串以及他们在 S 串中出现的位置,求字典序最小的 S 串.保证给出的字符串不会冲突. 分析 模拟就好.用并查集思想优化,数组 nxt[i] 表示从 i 开 ...
- POJ 3420 Quad Tiling (矩阵乘法)
[题目链接] http://poj.org/problem?id=3420 [题目大意] 给出一个4*n的矩阵,求用1*2的骨牌填满有多少方案数 [题解] 弄出不同情况的继承关系,用矩阵递推即可. [ ...
- java的一些基本常识
1.什么是java虚拟机?为什么把java称作是“无关平台的语言”? java虚拟机是一个可以执行Java字节码的虚拟进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java 被设计 ...
- tiny4412 串口驱动分析三 --- log打印的几个阶段之内核自解压
作者:彭东林 邮箱:pengdonglin137@163.com 开发板:tiny4412ADK+S700 4GB Flash 主机:Wind7 64位 虚拟机:Vmware+Ubuntu12_04 ...
- 【ASP.NET】 中 system.math 函数使用
1 /* 字段 */ 2 Math.E; //2.71828182845905 3 Math.PI; //3.14159265358979 4 5 /* 静态方法 */ 6 Math.Abs; //绝 ...
- frp -- proxy name [ssh] is already in use
- mac mysql命令行
https://www.cnblogs.com/lonecloud/p/5841522.html mac下使用mysql控制台命令行 命令行中输入 open .bash_profile 然后将 a ...
- git回退到某个commit
git log查看提交历史及提交的commit_id 回退命令: $ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之 ...
- 关于BufferedInputStream和BufferedOutputStream的实现原理的理解
在介绍FileInputStream和FileOutputStream的例子中,使用了一个byte数组来作为数据读入的缓冲区,以文件存取为例,硬盘存取的速度远低于内存中的数据存取速度.为了减少对硬盘的 ...