C 基本运算
一 算术运算
C语言一共有34种运算符 包括了常见的加减乘除运算
1. 加法运算+
除开能做加法运算 还能表示正号: +5, +90
2. 减法运算-
除开能做减法运算 还能表示符号: -10, -29
3. 乘法运算*
注意符号 不是x 而是*
4. 除法运算/
注意符号 不是÷ 也不是\ 而是/
整数除于整数 还是整数 1/2的值是0 这个并不是二分之一
5. 取余运算%(模运算)
什么是取余: 两个整数相除之后的余数
%两侧只能是整数 正负性取决于%左侧的数值
6. 注意点
1> 自动类型转换
int a = 10.6;
int b = 10.5 + 1.7;
自动将大类型转换为了小类型 会丢失精度
2> 自动类型提升
int b = 10.5 + 10;
将右边的10提升为了double类型
double b = 1.0 / 2;
解决除法的精度问题
3> 强制类型转换
double a = (double)1 / 2;
double b = (double)(1 / 2);
二 赋值运算
1. 简单赋值
int a = 10 + 5;的运算过程
a = b = 10;的运算过程
等号左边不能是常量 比如10 = 11;
2. 复合赋值
复加减乘除余: a += 4 + 5;
三 自增自减
1. 简单使用
++ 自增运算符 如a++, ++a 都等价于a = a+1;
-- 自减运算符 如a--, --a 都等价于a = a-1;
5++是错误的
2. ++a和a++的区别
++a 先把a的值+1 再做其它运算
a++ 把a原来的值先做运算 再把a的值+1
四 sizeof
1. 作用
用来计算一个变量或者一个常量 一种数据类型所占的内存字节数
2. 基本形式
sizeof( 变量\常量 )
sizeof 变量\常量
sizeof( 数据类型 )
不能是sizeof 数据类型
五 关系运算(比较运算)
1. 条件判断
默认情况下 我们在程序中写的每一句正确代码都会被执行 但很多时候 我们想在某个条件成立的情况下才执行某一段代码 这种情况的话可以使用条件语句来完成
2. 真假
1> 在C语言中 条件成立称为"真" 条件不成立称为"假" 因此 判断条件是否成立 就是判断条件的"真假"
2> 怎么判断真假呢? C语言规定: 任何数值都有真假性 任何非0值都为"真" 只有0才为"假" 也就是说 108, -18, 4.5, -10.5等都是"真" 0则是"假"
3. 关系比较
开发中经常要比较 比如斗地主游戏中牌的大小 利用关系运算符就可以比较两个值的大小
关系运算符的运算结果只有2种: 如果条件成立 结果就为1 也就是"真" 如果条件不成立 结果就为0 也就是"假"
4. 使用注意
1> 关系运算符中== !=的优先级相等 <, <=, >, >=的优先级相等 且前者的优先级低于后者: 2==3>1
2> 关系运算符的结合方向为"从左往右": 4>3>2
3> 关系运算符的优先级小于算术运算符: 3+4>8-2
六 逻辑运算
逻辑运算的结果只有2个: "真"为1 "假"为0
1. &&逻辑与
1> 使用格式
"条件A && 条件B"
2> 运算结果
只有当条件A和条件B都成立时 结果才为1 也就是"真" 其余情况的结果都为0 也就是"假" 因此 条件A或条件B只要有一个不成立 结果都为0 也就是"假"
3> 运算过程
总是先判断条件A是否成立
a. 如果条件A成立 接着再判断条件B是否成立: 如果条件B成立 "条件A && 条件B"的结果就为1 即"真" 如果条件B不成立 结果就为0 即"假"
b. 如果条件A不成立 就不会再去判断条件B是否成立: 因为条件A已经不成立了 不管条件B如何 "条件A && 条件B"的结果肯定是0 也就是"假"
4> 举例
逻辑与的结合方向是"自左至右" 比如表达式 (a>3) && (a<5)
a. 若a的值是4: 先判断a>3 成立 再判断a<5 也成立 因此结果为1
b. 若a的值是2: 先判断a>3 不成立 停止判断 因此结果为0
c. 因此 如果a的值在(3, 5)这个范围内 结果就为1 否则 结果就为0
5> 注意
a. 若想判断a的值是否在(3, 5)范围内 千万不能写成3<a<5 因为关系运算符的结合方向为"从左往右" 比如a为2 它会先算3<a 也就是3<2 条件不成立 结果为0 再与5比较 即0<5 条件成立 结果为1 因此 3<a<5的结果为1 条件成立 也就是说当a的值为2时 a的值是在(3, 5)范围内的 这明显是不对的 正确的判断方法是: (a>3) && (a<5)
b. C语言规定: 任何非0值都为"真" 只有0才为"假" 因此逻辑与也适用于数值 比如 5 && 4的结果是1 为"真", -6 && 0的结果是0 为"假"
2. ||逻辑或
1> 使用格式
"条件A || 条件B"
2> 运算结果
当条件A或条件B只要有一个成立时(也包括条件A和条件B都成立) 结果就为1 也就是"真" 只有当条件A和条件B都不成立时 结果才为0 也就是"假"
3> 运算过程
总是先判断条件A是否成立
a. 如果条件A成立 就不会再去判断条件B是否成立: 因为条件A已经成立了 不管条件B如何 "条件A || 条件B"的结果肯定是1 也就是"真"
b. 如果条件A不成立 接着再判断条件B是否成立: 如果条件B成立 "条件A || 条件B"的结果就为1 即"真" 如果条件B不成立 结果就为0 即"假"
4> 举例
逻辑或的结合方向是"自左至右" 比如表达式 (a<3) || (a>5)
a. 若a的值是4: 先判断a<3 不成立 再判断a>5 也不成立 因此结果为0
b. 若a的值是2: 先判断a<3 成立 停止判断 因此结果为1
c. 因此 如果a的值在(-∞, 3)或者(5, +∞)范围内 结果就为1 否则 结果就为0
5> 注意
C语言规定: 任何非0值都为"真" 只有0才为"假" 因此逻辑或也适用于数值 比如 5 || 4的结果是1 为"真", -6 || 0的结果是1 为"真", 0 || 0的结果是0 为"假"
3. !逻辑非
1> 使用格式
"! 条件A"
2> 运算结果
其实就是对条件A进行取反 若条件A成立 结果就为0 即"假" 若条件A不成立 结果就为1 即"真" 也就是说 真的变假 假的变真
3> 举例
逻辑非的结合方向是"自右至左" 比如表达式 ! (a>5)
a. 若a的值是6: 先判断a>5 成立 再取反之后的结果为0
b. 若a的值是2: 先判断a>3 不成立 再取反之后的结果为1
c. 因此 如果a的值大于5 结果就为0 否则 结果就为1
4> 注意
a. 可以多次连续使用逻辑非运算符: !(4>2)结果为0 是"假" !!(4>2)结果为1 是"真" !!!(4>2)结果为0 是"假"
b. C语言规定: 任何非0值都为"真" 只有0才为"假" 因此 对非0值进行逻辑非!运算的结果都是0 对0值进行逻辑非!运算的结果为1 !5, !6.7, !-9的结果都为0 !0的结果为1
4. 优先级
逻辑运算符的优先级顺序为: 小括号() > 负号 - > ! > 算术运算符 > 关系运算符 > && > ||
表达式!(3>5) || (2<4) && (6<1) 先计算 !(3>5), (2<4), (6<1)结果为1 式子变为1 || 1 && 0, 再计算1 && 0, 式子变为1 || 0, 最后的结果为1
表达式3+2<5||6>3 等价于 ((3+2) < 5) || (6>3) 结果为1
表达式4>3 && !-5>2 等价于 (4>3) && ((!(-5)) > 2) 结果为0
七 三目运算符
int a = 5 > 10 ? 18 : 2; 5>10不成立 返回第二个 结果是a=2
int b = 10 > 5 ? 18 : 2; 10>5成立 返回第一个 结果是b=18
int c = 0 ? 18 : 2; 0是"假" 返回第二个 结果是c=2
C 基本运算的更多相关文章
- Sass的基本运算(转载)
转载于:http://www.cnblogs.com/Medeor/p/4966952.html Sass中的基本运算 一.加法 在 CSS 中能做运算的,到目前为止仅有 calc() 函数可行.但在 ...
- YTU 3008: 链串的基本运算
3008: 链串的基本运算 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现链串的各种基本运算,主函数已给出,请补充每一种方法. 1.建立串s ...
- YTU 3007: 顺序串的基本运算
3007: 顺序串的基本运算 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现顺序串的各种基本运算,主函数已给出,请补充每一种方法. 1.建立 ...
- YTU 3004: 栈的基本运算(栈和队列)
3004: 栈的基本运算(栈和队列) 时间限制: 1 Sec 内存限制: 128 MB 提交: 32 解决: 10 题目描述 编写一个程序,实现顺序栈的各种基本运算,主函数已给出,请补充每一种方法 ...
- YTU 2990: 链表的基本运算(线性表)
2990: 链表的基本运算(线性表) 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现链表的各种基本运算(假设顺序表的元素类型为char),主 ...
- YTU 2989: 顺序表基本运算(线性表)
2989: 顺序表基本运算(线性表) 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 题目描述 编写一个程序,实现顺序表的各种基本运算(假设顺序表的元素类型为char), ...
- 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1> 简单介绍一下scanf函数 这是在 ...
- Swift学习(三)类型推导&基本运算&分支&循环
一.Swift中类型推导&基本运算 Swift中类型推导 如果一个标识符在定义时有直接赋值,那么可以根据后面赋值的类型,来推导出前面标识符的类型,这样前面标识符的(:类型)可以省略 查看标识符 ...
- Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)
swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛. 我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正! 一.在开发中优先使用常 ...
- 【Python之基本数据类型 基本运算】
一.基本数据类型 1.字符串 类:str 方法:选中str,按住command(ctrl)+左键跳转至对应的方法 字符串常用方法归纳如下: 1)capitalize 功能:实现字符串首字母大写,自身不 ...
随机推荐
- hpp.h与.h的区别
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译.而实现代码将直接 ...
- 自学安卓练习作品单词APP(1)-安卓的hello word与有道字典防爬虫破解
1.前言 闲来无聊.手机每天又是都接触的东西.程序什么的最容易接触到.想到有些人说前后端都做就是全栈的说法.哦,你看html5全栈. 要我说多接触一些多有意思.天天写后端.还不是业务层.又不是什么高大 ...
- 微软提供的Office在线预览地址
https://products.office.com/zh-CN/office-online/view-office-documents-online
- Unity应用发布如何在本地查看Debug输出?
http://blog.csdn.net/zfsr05255134/article/details/51867323
- 在jsp页面动态添加数据库中的内容
工具:myeclipse+oracle11g 1.首先新建一个jsp页面. 2.在src目录下新建实体类User.java 3.创建BaseDao用来链接数据库 4.在pl/sql中创建存储过程 5. ...
- 大数据框架-Mapreduce过程
1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...
- MVC进行多文件上传
用mvc做多文件的上传和保存到本地,大致流程就是,前台通过form表单提交多文件,Controller接受到文件流,将文件流保存到本地 然后将保存地址 存到数据库中. 将文件通过from提交 < ...
- pt-online-schema-change在线修改表结构
工具简介 pt-osc模仿MySQL内部的改表方式进行改表,但整个改表过程是通过对原始表的拷贝来完成的,即在改表过程中原始表不会被锁定,并不影响对该表的读写操作.首先,osc创建与原始表相同的不包含数 ...
- Vue项目用webpack打包后,预览时资源路径出错(文末有vue项目链接分享)
最近用vue写了一些项目,项目写完之后需要打包之后才能放到网上展示,所以在这里记录一下项目打包的过程以及遇到的一些问题. --------------------------------------- ...
- 浅谈CSS高度坍塌
高度坍塌情况: 当父元素没有设置高度,且子元素块都向左(右)浮动起来,那么父元素就会出现坍塌的现象. 解决办法: 在父元素包含块中加一个div: 优点:兼容性强,适合初学者. 缺点:不利于优化. 方法 ...