一:算术运算符

算术运算符非常地简单,就是小学数学里面的一些加减乘除操作。不过呢,还是有一些语法细节需要注意的。

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. 取余运算应用(1)-在js中

    取余运算应用(1)-在js中 1.应用1, 让一个数在一个范围内内循环 // 参考: https://zhuanlan.zhihu.com/p/55210125 // eg.让temp在0~5循环 l ...

  2. 取余运算怎么算_TensorFlow2.0(2):数学运算

    点击"机器学习算法与Python实战","置顶"公众号 重磅干货,第一时间送达 TensorFlow2.0(1):基本数据结构--张量 1 基本运算:(+.-. ...

  3. 取余运算怎么算_3 数学运算 矩阵操作

    数学运算 比Matlab更直观的数学表达方式 x = 102x>>20 但这就导致了可能会出现语法的冲突 十六进制整数文本表达式 0xff 可以被解析为数值文本 0 乘以变量 xff 浮点 ...

  4. mysql 取二进制某一位_c语言中如何提取二进制数中的某一位?

    展开全部 下面是三种方式: ①通过模2除2(%2./2)的方法62616964757a686964616fe58685e5aeb931333366306434 num%2--取出二进制的最后一位 nu ...

  5. python表示整除的符号_c语言中整除符号怎么表示?_后端开发

    c语言fun函数有什么例题?_后端开发 c语言fun函数例题有:1.fun函数表示计算x的y次幂,代码为[for(int i=1;i<=y;i++)result*=x]:2.fun函数交换两个指 ...

  6. python中的取余运算符是_python取余运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python中对负数求余的计算方法和求幂运算注意点python中对负数求余的计算 ...

  7. c语言里取余数的运算的代码,Math——取模运算及取余运算(示例代码)

    取模运算及取余运算 取余运算(Complementation)即我们小学时学的数学算术概念,而取模运算(Modulus Operation)常用于程序设计中 公式 a%b = a - (a/b * b ...

  8. C++中取余运算的优化

    0.前言 gcc/g++编译优化选项:-O 这个选项控制所有的优化等级.使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候. -O设置一共有五种:-O0.-O1.- ...

  9. C语言/(除号)和%(取余)运算操作符讲解

    C语言/(除号)和%(取余)运算操作符讲解 一./(除号)运算操作符讲解 在开始讲解之前,大家先判断下下面程序的运行结果 答案: 如果你的答案是3,那么恭喜你答对了,但是对于大部分都初学者而言,他们会 ...

最新文章

  1. 我国光纤速率创世界记录
  2. java读取 info.plist源码_Java 解析 IPA 文件,读取 Info.plist 信息-Go语言中文社区
  3. java map移除key为空_Java实现过滤掉map集合中key或value为空的值示例
  4. 计算机控制技术在线,西交19春《计算机控制技术》在线作业【标准答案】
  5. 盘点IT中最热门的岗位,有你工作的岗位吗?
  6. 7-6 红豆生南国 (25 分)
  7. ZetCode Java 教程
  8. python画热力图
  9. java面试之多线程篇
  10. android 夏令时,android – jodatime如何知道夏令时是否开启
  11. 双向链表的结点增删细节(p->next->prior = s是啥意思,p->next->prior究竟代表下一个结点的prior指针还是p本身)
  12. python全栈开发中级班全程笔记(第三模块、第一章(多态、封装、反射、内置方法、元类、作业))...
  13. 当女生说没衣服穿时。。。。
  14. 【QFD】质量保证需求
  15. 聚类之高斯混合模型(Gaussian Mixture Model)
  16. File System 定额(配额查询)
  17. API `getFileSystemManager` is not yet implemented uni-app 图片转码解决方法
  18. 小程序---365笔记第11天---微信小程序登录接入
  19. 京东2015校园招聘技术类笔试题(笔试时间:2014-10-18)
  20. 插件 图片取模软件 支持16位数组 Bmp2RGB

热门文章

  1. ubuntu+intellij IDEA+android环境配置
  2. mysql udf安全_打造全功能MYSQL入侵UDF
  3. 随想录(分布式系统)
  4. python编程(wx客户端编写)
  5. 随想录(关于smp的均衡负载)
  6. ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)
  7. 学校为什么要单位接收函_签了三方,想毁约怎么办?这几点你必须要知道!
  8. ie ajax异步缓存,IE下发送Ajax请求的缓存问题
  9. ppt录制宏_Word中录制宏,学会后成大神
  10. linux java xmx_linux应用实际内存大于 jvm xmx