运算符是告诉编译程序执行特定算术或逻辑操作的符号。C语言的运算范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。主要分为三大类:算术运算符、 关系运算符与逻辑运算符。除此之外,还有一些用于完成特殊任务的运算符。
先来看一个例子:
#include <stdio.h> int main(){ int a=10,b=1,c=2; a=b=c; printf( "12+3*5=%d\n", 12+3*5); printf( "a=%d, c=%d\n", a, c); return 0; }
运行结果:
12+3*5=27
a=2, c=2
1) 对于表达式12+3*5,很明显先进行乘法运算,计算3*5,结果为15,再进行加法运算,计算12+15,结果为27。也就是说,乘法的优先级比加法高,要先计算,这与数学中的规则是一样的。
所谓优先级,就是当有多个运算符在同一个表达式中出现时,先执行哪个运算符。如果不想按照默认的规则执行,可以加( ),例如(12+3)*5的结果为 75,(2+5)*(10-4)的结果为 42。大部分情况下,它们的规则和数学中是相同的。
2) 对于语句赋值语句a=b=c;,先执行b=c,再执行a=b,而不是反过来,这说明赋值操作符=具有右结合性。
所谓结合性,就是当一个运算符多次出现时,先执行哪个运算符。先执行右边的叫右结合性,先执行左边的叫左结合性。
表达式(Expression)和语句(Statement)的概念在C语言中并没有明确的定义:
表达式可以看做一个计算的公式,往往由数据、变量、运算符等组成,例如3*4+5、a=c=d等,它的结果必定是一个值;
语句的范围更加广泛,不一定是计算,不一定有值,可以是某个操作、某个函数、选择结构、循环等。
值得注意的是:以分号;结束的往往称为语句,而不是表达式,例如3*4+5;、a=c=d;等。
3) 像 +、-、*、/ 这样的运算符,它的两边都有数据,例如 3+4、a*3 等,有两个操作数,我们称这样的运算符为双目运算符。后面还会讲解单目运算符和三目运算符。
以上就是对 C语言运算符的优先级和结合性的知识整理,希望对学习C语言的同学有所帮助。
主要内容:总结本节我们从一个例子入手讲解,请看下面的代码: 运行结果: d=24, e=8 1) 对于表达式 ,如果按照数学规则推导,应该先计算乘法,再计算加法; 的结果为 8, 的结果为 24,所以 d 最终的值也是 24。从运行结果可以看出,我们的推论得到了证实,C语言也是先计算乘法再计算加法,和数学中的规则一样。 先计算乘法后计算加法,说明乘法运算符的优先级比加法运算符的优先级高。 所谓优先级,就是当多个
主要内容:Python 运算符优先级,Python 运算符结合性,总结优先级和结合性是 Python 表达式中比较重要的两个概念,它们决定了先执行表达式中的哪一部分。 Python 运算符优先级 所谓优先级,就是当多个运算符同时出现在一个表达式中时,先执行哪个运算符。 例如对于表达式 ,Python 会先计算乘法再计算加法; 的结果为 8, 的结果为 24,所以 d 最终的值也是 24。先计算 再计算 ,说明 的优先级高于 。 Python 支持几十种运算符,被划分
本文向大家介绍简单总结C语言中的运算符优先级,包括了简单总结C语言中的运算符优先级的使用技巧和注意事项,需要的朋友参考一下 C语言中有很多运算符,除了四则运算,还有位运算、比较运算、逻辑运算、赋值运算等等,令人眼花缭乱的同时,优先级也让人头疼。通常建议在写代码的时候不用省略括号,但是并不是所有程序员都会按照这个规矩来,因此还是有必要记录一下,以备查阅。 总结几个比较重要的原则: 取成员的“0”目运
运算符是用来在程序运行时执行数学或逻辑运算的,在Go语言中,一个表达式可以包含多个运算符,当表达式中存在多个运算符时,就会遇到优先级的问题,此时应该先处理哪个运算符呢?这个就由Go语言运算符的优先级来决定的。 比如对于下面的表达式: var a, b, c int = 16, 4, 2 d := a + b*c 对于表达式 ,如果按照数学规则推导,应该先计算乘法,再计算加法; 的结果为 8, 的结
通过前面的学习我们知道运算符有不同的类型,当这些不同类型的运算符出现在同一个表达式中时,就必须遵循运算符的优先级来进行运算,才能保证运算的合理性和结果的正确性、唯一性。运算符的优先级决定了表达式中各个部分执行运算的先后顺序。 下表中详细介绍了 C# 中运算符的优先级顺序: 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[整型表达式] 左到右 () 圆括号 (表
优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换 (数据类型)表达式 ++ 自增运算符 ++变量名/变量名++ 单目运算符 -- 自减运算符 --变