C语言运算符的优先级和结合性实例详解

所属分类: 软件编程 / C 语言 阅读数: 57
收藏 0 赞 0 分享

运算符是告诉编译程序执行特定算术或逻辑操作的符号。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语言的同学有所帮助。

更多精彩内容其他人还在看

C++中四种对象生存期和作用域以及static的用法总结分析

以下是对C++中四种对象生存期和作用域以及static的用法进行了详细的介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

C++嵌套类与局部类详细解析

从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类之外的作用域使用该类名时,需要加名字限定
收藏 0 赞 0 分享

C++空类详解

以下是对C++中的空类进行了详细的介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

C++之友元:友元函数和友元类详解

友元是一种允许非类成员函数访问类的非公有成员的一种机制。可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元
收藏 0 赞 0 分享

C++中返回指向函数的指针示例

int (*ff(int)) (int *,int);表示:ff(int)是一个函数,带有一个int型的形参,该函数返回int (*) (int *,int),它是一个指向函数的指针,所指向的函数返回int型并带有两个分别是Int*和int型的形参
收藏 0 赞 0 分享

C数据结构之单链表详细示例分析

以下是对C语言中的单链表进行了详细的分析介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

C数据结构之双链表详细示例分析

以下是对c语言中的双链表进行了详细的分析介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

浅析如何在c语言中调用Linux脚本

如何在c语言中调用Linux脚本呢?下面小编就为大家详细的介绍一下吧!需要的朋友可以过来参考下
收藏 0 赞 0 分享

深入解析unsigned int 和 int

以下是对unsigned int和int进行了详细的分析介绍,需要的朋友可以过来参考下
收藏 0 赞 0 分享

浅谈C++中的string 类型占几个字节

本篇文章小编并不是为大家讲解string类型的用法,而是讲解我个人比较好奇的问题,就是string 类型占几个字节
收藏 0 赞 0 分享
查看更多