Logo

郎哥编程

第20讲:运算符优先级

2026-03-05 18

一、sizeof运算符

sizeof运算符是一个非常有用的运算符,它是一个单目运算符,用于判断变量或数据类型的字节大小。

C语言的整数类型并没有严格规定其长度,若需要获取整数类型的长度,就需要使用sizeof运算符,sizeof运算符不仅可以获取整数类型的长度,他也可以获取任何数据类型的长度,他返回数据类型占有存储空间的字节数。

sizeof运算符获取数据类型长度的一般形式为:

sizeof(type_name);

其中type_name必须使用括号括起来,它可以是int、short、long、char等任何C语言支持的数据类型。

例【1】输出不同整数类型的长度

程序清单 sample.c

#include <stdio.h>
int main()
{
	printf("int类型的长度为:%d\n",sizeof(int));
	printf("short int类型的长度为:%d\n",sizeof(short int));
	printf("long int类型的长度为:%d\n",sizeof(long int));
}

sizeof运算符获取变量长度的一般形式为:

sizeof(variable_name) 或 sizeof variable_name

例【2】输出变量的长度

#include <stdio.h>
int main()
{
	int a;
	char  c;
	double d;
	printf("变量a的长度为:%d\n",sizeof(a));
	printf("变量c的长度为:%d\n",sizeof(c));
	printf("变量d的长度为:%d\n",sizeof d);
}

二、运算符的优先级

C表达式可能存在多个运算符,运算符之间存在优先级的关系,级别高的运算符先执行运算,级别低的运算符后执行运算算,下表列出了运算符的优先级。表中优先级栏,数字越小优先级越高,运算符每个运算符用中文顿号分割。

1 运算符优先级

优先级

运算符

结合性

1

()

从左到右

2

!  ++ 、--sizeof

从右到左

3

*  /%

从左到右

4

+、-

从左到右

5

< <= > >=

从左到右

7

==、  !=

从左到右

8

&&

从左到右

9

||

从左到右

10

= += -= *= /= %=

从右到左

表中小括号‘()’优先级最高,表达式含有小括号的,优先执行小括号的内容,如果包含多个小括号,执行顺序是从左到右。

例如,假设变量a的值为12,下述语句的执行会有不同的结果:

(1)执行 a + 18 % 4 ,因为运算符%的优先级高于运算符+,该语句先执行取余运算,再执行加法运算,其结果为14;

(2)执行( a + 18 ) % 4 ,因为小括号的优先级最高,该语句先执行小括号里的表达式a+18,再执行取余运算,其结果为2;

(3)执行 a * ( ( a + 18 ) % 4 ),该语句括号内嵌套括号,执行顺序是先执行内层括号的运算,再执行外层括号的运算,其运算结果为24。

例【3】运算符优先级练习

程序清单 sample.c

#include <stdio.h>
int main()
{
	// 声明变量a和b并赋值
    int  a = 10;
    int  b = 4;
    // 执行运算
    a += ++b;
    printf("a =%d\n",a);     
    printf("b =%d\n",b);     

}

语句“a += ++b;”,涉及到运算符+=和++两个运算符,从运算符优先级表可知,++运算符的优先级要高于+=运算符,b应先做自增运算,然后再与a相加,结果为15。一个特例是,语句“a += b++;”,虽然++的优先级高于+=,但此语句的++是后缀式,后缀式是先使用再自增,因此,b先与a相加后,再做自增运算,结果为14。

在实际的开发中,不需要特别去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号辅助进行优先级管理。

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论