1.基本运算符
1.1 赋值运算符:=
在C语言中,=是一个赋值运算符,例如:bwm=2002;
在下面这个程序中:
#include <stdio.h>
int main(void)
{
int jane, tarzan, cheeta;
cheeta = tarzan = jane = 68;
printf(" cheeta tarzan jane\n");
printf("First round score %4d %8d %8d\n", cheeta, tarzan, jane);
return 0;
}
在其他语言会回避三重赋值,但在C语言中完全没问题,赋值的顺序是从右往左。
1.2 除法运算符:/
整数除法和浮点数除法不同。浮点数除法的结果是浮点数,而整数除法的结果是整数。整数是没有小数部分的数。在C语言中,整数除法结果的小数部分被丢弃,这一过程被称为截断。
1.3 运算符优先级
运算符 | 结合律 |
() | 从左往右 |
+ -(一元即正负号) | 从右往左 |
* / | 从左往右 |
+ -(二元即加减) | 从左往右 |
= | 从右往左 |
注:结合律只适用于共享同一运算对象的运算符
1.4 sizeof运算符和size_t类型
sizeof运算符以字节为单位返回运算对象的大小。C语言规定,sizeof返回size_t类型的值。这是一个无符号整数类型。
1.5 递增运算符 ++
该运算符有两种方式。
1.++出现在其作用的变量前面,这是前缀模式;
2.++出现在其作用的变量后面,这是后缀模式;
例如:
#include <stdio.h>
int main(void)
{
int a = 1, b = 1;
int a_post, b_post;
a_post = a++;
b_post = ++b;
printf("a a_post b b_post \n");
printf("%1d %5d %5d %5d\n", a, a_post, b, b_post);
return 0;
}
运行结果如下:
a a_post b b_post
2 1 2 2
可以发现a和b都递增了1,但是a_post是a递增之前的值,b_post是b递增之后的值,这就是++前缀和后缀的区别。
1.6 递减运算符:--
递减运算符和递增运算符同理,这里就不在赘述。
递增和递减运算符都有很高的结合优先级,只有圆括号的优先级比它们高。
不过不要混淆这两个运算符的优先级和它们的求值顺序。例如:
y=2;
n=3;
num=(y + n++)*6;
把y和n的值代入上面得:
num=(2+3)*6=5*6=30
n的值只有在被使用之后才会递增为4.根据优先级规定,++只作用于n,不作用于y+n。即n++是表达式的一部分,可将其视为先使用n,再递增;而++n则表示先递增n,再使用。