运 算 符
(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=a*b 可以写成a*=b 。其余类推。 这样书写简练,运行速度快,也提高了编译效率。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69914734/viewspace-2654629/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69914734/viewspace-2654629/