运算符是可以对数据进行运算的符号,比如+、-、*、/、%等符号。除了算术运算符之外,像取数据下标,括号函数调用等也是运算符。
运算符操作的对象称为操作数,运算符与操作数组合成表达式。表达式结尾没有分号,如果在表达式两边加上一个括号,那么表达式最终可以得到一个值,这是表达式与语句的区别。
使用运算符与表达式的时候,以下几点要注意:
C语言中的运算符定义很宽,除数值运算符外,取地址,解地址,赋值(=)等都可以看成运算符,以下是C语言中运算符的各类:
摘抄自《C语言深度解剖(第2版)》,优先级越小越高。
注:
包括:
注意点:
包括:
注意点:
注意点:
C语言中,逗号也是运算符的一种,类似下面这样的表达式是允许的:
a = (3, 4);
(a > 0, a = 1)
(printf(“hello”), 1, 3)
逗号运算是C语言中优先级最低的运算符,所有表达式从左往右依次计算,逗号运算的结果是最后一个表达式的值。
表达式1 ? 表达2 :表达3
a > b ? a : b
sizeof是一个特殊的运算符,用于判断变量或类型的大小,通过sizeof计算出的大小默认为long类型,如下:
#include <stdio.h> int main() { printf("sizeof(char) = %ld\n", sizeof(char)); // 1 printf("sizeof(int) = %ld\n", sizeof(int)); // 4 printf("sizeof(double) = %ld\n", sizeof(double)); // 8 int a; printf("sizeof(a) = %ld\n", sizeof(a)); // 4 } |
注意一点,sizeof可以接受表达式作为参数,比如sizeof(a++)
,但是sizeof并不会执行这个表达式,它只会判断出表达式结果的类型并返回其大小,也就是sizeof(a++)
并不会使a自增。