C语言中都有那些运算符?

205 阅读3分钟

运算符

  (1)算术运算符(+,-,*,/,%,++,--)。

  (2)关系运算符(<,>,<=,>=,==,![KG-*8]=)。

  (3)逻辑运算符(!,&&,||)。

  (4)位运算符(<<,>>,~,|,^,&)。

  (5)赋值运算符(=,及其双目运算符的扩展赋值运算符)。

  (6)条件运算符(?:)。

  (7)逗号运算符(,)。

  (8)指针运算符(*,&)。

  (9)求字节数运算符(sizeof)。

  (10)强制类型转换运算符((类型))。

  (11)分量运算符(·,->)。

  (12)下标运算符([])。

  (13)圆括号运算符(())。

 算术运算符和赋值运算符  

  说明:

  (1)+,-,*,/与数学中运算类似,先乘除后加减,也就是按优先级顺序进行运算,优先级小的先运算。要改变运算顺序只要加括号就可以了,括号全部为圆括号,必须注意括号的配对,它们适用于C的几乎全部数据类型(指针类除外)的各种运算(++,--除外)。除法运算符(/)在用于两个整型数据运算时,其运算结果也是整数,余数总是被截掉。如1/2的结果是0;10/3的结果是3。

  (2)求余运算符(%)仅用于整型数据,不能用于实型和双精度实型。它的作用是取整数除法的余数。如1%2的结果是1;10%3的结果也是1。

  (3)赋值运算符(=)是将右边表达式的值赋给左边的变量。赋值运算符左边必须是变量等有存贮单元的元素,而不能是常量或表达式。如x=x+1是合法的,即把x的值加上1后再赋给x,而x+1=x却是非法的,因为x+1不是一个存贮单元,不能被赋以值。赋值号有别于数学中的等号,这一点是要注意的。

  (4)++,--仅用于整型变量,指针变量。用于整型变量在原值上加1或减1;用于指针变量是取下一地址或上一地址。关于指针部分的使用在第八章中介绍。增1和减1运算符用在表达式中时,写法是有差别的:如果运算符在操作数前面,则在表达式“引用”该操作数前,先对其作加1或减1运算;如果运算符在操作数之后,则先“引用”该操作数,然后再对它作加1或减1运算。考虑以下程序:

  main()

  {int x,y;

  x=10;

  y=++x;

  printf(″%d,%d\n″,x,y);

  }

  运算结果为   11,11

  此时y的值和x的值都为11。然而换一种写法:   main()

  {int x,y;

  x=10;

  y=x++;

  printf(″%d,%d\n″,x,y);

  }

  运行结果为

  11,10

  此时y的值是10,而x的值自增后为11。上述两种情况x都变成了11,而y的值却不同。它们的差别只在于给x加1的时机不同。此时赋值即为引用。再如进行输出操作时,有以下程序段:

  x=10;

  printf(″x=%d\n″,++x);

  运行结果为x=11,执行其下一条语句时x也是11,而程序段:

  x=10;

  printf(″x=%d\n″,x++);

  (5)+,-,,/,%可以与赋值号=组成复合赋值运算符+=,-=,=,/=,%=。

  如a=a+b可以写成a+=b,a=ab可以写成a=b。其余类推。这样书写简练,运行速度快,也提高了编译效率。