取余运算怎么算_c语言中的基本运算其一!
一:算术运算符
算术运算符非常地简单,就是小学数学里面的一些加减乘除操作。不过呢,还是有一些语法细节需要注意的。
1.加法运算符 +
1 int a = 10;
2
3 int b = a + 5;
在第3行利用加法运算符 + 进行了加法运算,再将和赋值给了变量b,最终变量b的值是15
2.减法运算符 或 负值运算符 -
1 int b = 10 - 5;
2
3 int a = -10;
1> 在第1行利用减法运算符 - 进行了减法运算,再将差赋值给了变量b,最终变量b的值是5
2> 在第3行中,这个 - 并不是什么减法运算符,而算是一个负值运算符,-10代表的是负十
3.乘法运算符 *
1 int b = 10 * 5;
注意:乘法运算符并不是x或者X,而是星号*。变量b最终的值是50。
4.除法运算符 /
1 double a = 10.0 / 4;
2 double b = 10 / 4;
3
4 printf("a=%f, b=%f n", a, b);
注意:除法运算符并不是÷,而是一个正斜杠 /
1> 第1行中的10.0是浮点型,4是整型,因此会将4自动类型提升为浮点型后再进行运算,最后变量b的值是2.5
2> 第2行中的10和4都是整型,计算机中的运算有个原则:相同数据类型的值才能进行运算,而且运算结果依然是同一种数据类型。因此,整数除于整数,求出来的结果依然是整数,会损失小数部分。最后变量b的值是2。查看输出结果:
3> 如果想让 整数除于整数 不损失精度的话,可以将某个整数强制转换为浮点型数据
1 double a = (double)10 / 4;
2
3 double b = 10 / (double)4;
4
5 double c = (double)10 / (double)4;
6
7 double d = (double) (10 / 4);
10和4之间只要有1个强转为浮点型数据即可,另外1个整数会自动类型提升为浮点型数据。因此,变量a、b、c的值都是2.5。
变量d的情况就不一样了,第7行代码的意思是先计算(10/4)的值,再将(10/4)的值强转为浮点型数据。(10/4)的值是2,将2强转为浮点型数据,那不也就是2么?所以,变量d的值是2
5.模运算符 或称 取余运算符 %
注意:这个%并不是除号÷,它是一个取余运算符,或者叫做模运算符。取余的意思是,取得两个整数相除之后的余数。比如,5除于2的余数是1,5除于3的余数是2。因此使用这个%有个原则:%两侧必须都为整数。下面的写法是错误的:
1 int a = 5.0 % 2;
编译器会直接报错,因为5.0并非整数。
1> 正数取余
1 int a = 5 % 2;
2 int b = 2 % 5;
简单计算可得:变量a的值为1,变量b的值为2
2> 负数取余
1 int a = -5 % 2;
2 int b = 5 % -2;
3 int c = -5 % -2;
利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反。因此变量a、b、c的值分别是-1、1、-1
6.运算顺序
1> 算术表达式
用算术运算符将数据连接起来的式子,称为“算术表达式”。比如a + b、10 * 5等。如果表达式比较复杂的话,那么就要注意一下它的运算顺序。表达式的运算顺序是按照运算符的结合方向和优先级进行的。
2> 结合方向
算术运算符的结合方向是从左到右。例如表达式2+3+4,先计算2+3。
3> 优先级
优先级越高,就越先进行运算,当优先级相同时,参照结合方向。下面是算术运算符的优先级排序:
负值运算符(-) > 乘(*)、除(/)、模(%)运算符 > 加(+)、减(-)运算符
例如表达式4+5*8/-2的计算顺序为:-、*、/、+,最后的结果是-16
4> 小括号
如果需要先计算优先级低的可以使用小括号()括住,小括号的优先级是最高的!
例如4+5*8-2默认的计算顺序是:*、+、-
如果想先执行加法运算,就可以这样写:(4+5)*8-2,最后的结果都是不一样的
二、赋值运算符
赋值运算符又分两种:简单赋值运算符 和 复合赋值运算符。
1.简单赋值运算符 =
1> 简单用法
其实这个等号 = 从讲变量开始就见过它了,它的作用是将右边的值赋值给左边。
1 int a = 10 + 5;
赋值运算符的结合方向是:从右到左,而且优先级比算术运算符低。因此先进行等号=右边的加法运算,运算完毕后再将结果赋值给等号右边的变量。最后变量a的值是15。
2> 连续赋值
1 int a, b;
2
3 a = b = 10;
在第1行分别定义了int类型的变量a、b
第3行代码的意思:将10赋值给变量b,再把变量b的值赋值给a。所以最后变量a、b的值都是10
3> 使用注意
等号=左边只能是变量,不能是常量!常量都是不可变的,怎么可以再次赋值呢?下面的写法是错误的:
1 10 = 10 + 5;
2.复合赋值运算符
+= 加赋值运算符。如a += 3+2,等价于 a = a +(3+2)
-= 减赋值运算符。如a -= 3+2,等价于 a = a -(3+2)
*= 乘赋值运算符。如a *= 3+2,等价于 a = a *(3+2)
/= 除赋值运算符。如a /= 3+2,等价于 a = a /(3+2)
%= 取余赋值运算符。如a %= 3+2,等价于 a = a %(3+2)
三、自增运算符和自减运算符
1.简介
++ 自增运算符。如a++,++a,都等价于a = a+1
-- 自减运算符。如a--,--a,都等价于a = a-1
注意:你写个5++是错误的,因为5是常量。
2.++a和a++的区别
1> 单独使用++a和a++时,它们是没区别的
1 int a = 10;
2 a++;
1 int a = 10;
2 ++a;
上面两段代码的效果都是让a的值+1,最后a的值都为11
2> 下面这种情况,++a和a++就有区别了
1 int a = 10;
2
3 int b = ++a;
1 int a = 10;
2
3 int b = a++;
上面两段代码的执行结果是有区别的。
第1段代码:++a的意思是先对a执行+1操作,再将a的值赋值给b。因此最后a、b的值都是11
第2段代码:a++的意思是先将a的值拷贝出来一份,然后对a执行+1操作,于是a变成了11,但是拷贝出来的值还是10,a++运算完毕后,再将拷贝出来的值10赋值给了b,所以最后变量b的值是10,变量a的值是11
--a和a--的区别也是一样的。
3> 再来看一个比较刁钻的例子
1 int a = 10;
2
3 a = a++;
很多人一眼看上去,觉得最后a的值应该是11,其实最后a的值是10。前面已经说过a++的作用了,这里也是一样的。先将a的值拷贝出来一份,然后对a执行+1操作,于是a变成了11,但是拷贝出来的值还是10,a++运算完毕后,再将拷贝出来的值10赋值给了a,所以最后变量a的值是10
四、sizeof
* sizeof可以用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
int size = sizeof(10);
printf("10所占的字节数:%d", size);
输出结果:
10是int类型的数据,在64bit编译器环境下,int类型需要占用4个字节
* sizeof一共有3种形式
sizeof( 变量常量 )
sizeof(10);
char c = 'a';
sizeof(c);
sizeof 变量常量
sizeof 10;
char c = 'a';
sizeof c;
sizeof( 数据类型 )
sizeof(float);
注意,不可以写成sizeof float;
感谢观看!
如果你也想成为一名程序员那就关注我与我交流,不管是零基础还是入门小白学习,要有个相互监督的伙伴,工作需要学习C/C++或者感兴趣、为了入行、转行学习C/C++的伙伴可以一起学习!关注小编的专栏,手把手教你如何实现!
程序猿zhuanlan.zhihu.com
取余运算怎么算_c语言中的基本运算其一!相关推荐
- 取余运算应用(1)-在js中
取余运算应用(1)-在js中 1.应用1, 让一个数在一个范围内内循环 // 参考: https://zhuanlan.zhihu.com/p/55210125 // eg.让temp在0~5循环 l ...
- 取余运算怎么算_TensorFlow2.0(2):数学运算
点击"机器学习算法与Python实战","置顶"公众号 重磅干货,第一时间送达 TensorFlow2.0(1):基本数据结构--张量 1 基本运算:(+.-. ...
- 取余运算怎么算_3 数学运算 矩阵操作
数学运算 比Matlab更直观的数学表达方式 x = 102x>>20 但这就导致了可能会出现语法的冲突 十六进制整数文本表达式 0xff 可以被解析为数值文本 0 乘以变量 xff 浮点 ...
- mysql 取二进制某一位_c语言中如何提取二进制数中的某一位?
展开全部 下面是三种方式: ①通过模2除2(%2./2)的方法62616964757a686964616fe58685e5aeb931333366306434 num%2--取出二进制的最后一位 nu ...
- python表示整除的符号_c语言中整除符号怎么表示?_后端开发
c语言fun函数有什么例题?_后端开发 c语言fun函数例题有:1.fun函数表示计算x的y次幂,代码为[for(int i=1;i<=y;i++)result*=x]:2.fun函数交换两个指 ...
- python中的取余运算符是_python取余运算
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python中对负数求余的计算方法和求幂运算注意点python中对负数求余的计算 ...
- c语言里取余数的运算的代码,Math——取模运算及取余运算(示例代码)
取模运算及取余运算 取余运算(Complementation)即我们小学时学的数学算术概念,而取模运算(Modulus Operation)常用于程序设计中 公式 a%b = a - (a/b * b ...
- C++中取余运算的优化
0.前言 gcc/g++编译优化选项:-O 这个选项控制所有的优化等级.使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候. -O设置一共有五种:-O0.-O1.- ...
- C语言/(除号)和%(取余)运算操作符讲解
C语言/(除号)和%(取余)运算操作符讲解 一./(除号)运算操作符讲解 在开始讲解之前,大家先判断下下面程序的运行结果 答案: 如果你的答案是3,那么恭喜你答对了,但是对于大部分都初学者而言,他们会 ...
最新文章
- 我国光纤速率创世界记录
- java读取 info.plist源码_Java 解析 IPA 文件,读取 Info.plist 信息-Go语言中文社区
- java map移除key为空_Java实现过滤掉map集合中key或value为空的值示例
- 计算机控制技术在线,西交19春《计算机控制技术》在线作业【标准答案】
- 盘点IT中最热门的岗位,有你工作的岗位吗?
- 7-6 红豆生南国 (25 分)
- ZetCode Java 教程
- python画热力图
- java面试之多线程篇
- android 夏令时,android – jodatime如何知道夏令时是否开启
- 双向链表的结点增删细节(p->next->prior = s是啥意思,p->next->prior究竟代表下一个结点的prior指针还是p本身)
- python全栈开发中级班全程笔记(第三模块、第一章(多态、封装、反射、内置方法、元类、作业))...
- 当女生说没衣服穿时。。。。
- 【QFD】质量保证需求
- 聚类之高斯混合模型(Gaussian Mixture Model)
- File System 定额(配额查询)
- API `getFileSystemManager` is not yet implemented uni-app 图片转码解决方法
- 小程序---365笔记第11天---微信小程序登录接入
- 京东2015校园招聘技术类笔试题(笔试时间:2014-10-18)
- 插件 图片取模软件 支持16位数组 Bmp2RGB
热门文章
- ubuntu+intellij IDEA+android环境配置
- mysql udf安全_打造全功能MYSQL入侵UDF
- 随想录(分布式系统)
- python编程(wx客户端编写)
- 随想录(关于smp的均衡负载)
- ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)
- 学校为什么要单位接收函_签了三方,想毁约怎么办?这几点你必须要知道!
- ie ajax异步缓存,IE下发送Ajax请求的缓存问题
- ppt录制宏_Word中录制宏,学会后成大神
- linux java xmx_linux应用实际内存大于 jvm xmx