①求余运算符%
②位运算符~、&、|、^、<<、>>。
具体原因是:
①求余运算必需是整型是因为求余是在整数除法中的运算。
②位运算必需是整型是因为位运算是操作整数中的位。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
运算符
(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()
{intx,y;
x=10;
y=++x;
printf(″%d,%d\n″,x,y);
}
运算结果为
11,11
此时y的值和x的值都为11。然而换一种写法:
main()
{intx,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=a*b可以写成a*=b。其余类推。这样书写简练,运行速度快,也提高了编译效率。