赞
踩
+ - * / %
(1)除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。
(2)对于/操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
(3)%操作符的两个操作数必须为整数。返回的是整除之后的余数。
<< 左移操作符 >> 右移操作符
(1)左移操作符操作时:左边抛弃,右边补0。
(2)右移操作符操作运算分为俩种:
逻辑右移:左边用0填充,右边丢弃。
算数右移:左边用原该值的符号位填充,右边丢弃。
注意:
(1)对于移位操作符,不要移动负数位,这个是标准未定义的。
(2)我们一般使用算数右移。
& 按位与 | 按位或 ^ 按位异或
- #include<stdio.h>
- int main()
- {
- int num1 = 1;//00000000000000000000000000000001
- int num2 = 2;//00000000000000000000000000000010
- num1 & num2; //00000000000000000000000000000000 有0为0
- num1 | num2; //00000000000000000000000000000011 有1为1
- num1 ^ num2; //00000000000000000000000000000011 相同为0,相异为1
- return 0;
- }
= += -= *= /= %= >>= <<= &= |= ^=
这些运算符都可以写成复合的效果。比如:
- int i = 0;
- i = i + 5;
- i += 5;//复合赋值
! 逻辑反操作、 - 负值、 + 正值、 & 取地址、 sizeof 操作数的类型长度,以字节为单位、
~ 对一个数的二进制按位取反、 -- 前置、后置--、 ++ 前置、后置++、
* 间接访问操作符,解引用操作符、 (类型) 强制类型转换 .
(1)!是操作符对它的操作数执行逻辑反操作,结果为真则输出假,结果为假输出为真,真为1,假为0。
(2)- 与 +就像一个数学符号一样产生正值和负值。
(3)& 取地址,取一个操作数的地址,&数组名取的是整个数组的地址。
(4)sizeof求变量时,可省括号:sizeof a //求a变量的类型长度。以字节为单位。 求类型长度时,不能省略括号: sizeof(int)
(5)~ 对一个数的二进制按位取反(包括符号位)
(6)前置 ++ 先加后用 ,前置 -- 先减后用
- int i = 0;
- int j = ++i;
- printf("%d %d", j, i);//j = 1; i = 1;
(7)后置 ++ 先用后加,后置 -- 先用后减
- int i = 0;
- int j = i++;
- printf("%d %d", j, i);//j = 0; i = 1;
(8)* 间接访问操作符,与指针一起使用,用于访问指针所指向的值。
- int a = 10;
- int *p = &a;//此处 * 表示为整型指针 ,把现有变量的地址赋值给一个指针变量
- *p = 20;// * 为指针运算符 ,*p的值改变,同样a的值也改变
- printf("%d", a);//20
(9)(类型)强制类型转换,把表达式的值转换为另外比较大的类型的时候,需要强制类型转换。
> >= < <= != 不想等 == 相等
&& 逻辑与 || 逻辑或
(1)区分逻辑与和按位与,逻辑或和按位或
1 & 2 ----------> 0 二进制运算后值为0
1 &&2 -----------> 1
1 | 2 -------------> 3
1 || 2 ------------->1
(2)工作原理: &&操作符的左操作数总是首先进行求值, 如果它的值为真,然后就紧接着对右操作数进行求值。如果左操作数
的值为假,那么右操作数便不再进行求值,因为整个表达式的值肯定是假的,右操作数的值已无关紧要。|操作符也具有相同的特
点,它首先对左操作数进行求值,如果它的值是真,右操作数便不再求值, 因为整个表达式的值此时已经确定。这个行为常常
被称为“短路求值”。
- #include<stdlib.h>
- int main()
- {
- int i = 0, a = 0, b = 2, c = 3, d = 4;
- i = a++ && ++b && d++;
- //i = a++ || ++b || d++ a = 1, b = 3, c = 3, d = 4
- printf(" a = %d\n b = %d\n c = %d\n d = %d\n", a, b, c, d);//a = 1, b = 2, c = 3, d = 4
- system("pause");
- return 0;
- }
exp1 ? exp2 : exp3
(1)首先计算的是exp1, 如果它的值为真(非零值),那么整个表达式的值就是exp2的值, exp3不会进行求值。但是,如果exp1
的值是假(零值), 那么整个条件语句的值就是expression3的值,exp2 不会进行求值。
exp1 , exp2 , exp3,....... expN
(1) 逗号操作符将两个或多个表达式分隔开来。这些表达式自左向右逐个进行求值,整个逗号表达式的值就是最后那个表达式的
值,意思就是最后这个表达式起判断作用。
(1)[ ]下标引用操作符
操作数:一个数组名 + 一个索引值
(2)()函数调用操作符
接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传给函数的参数
(3). 结构体、成员名 -> 结构体指针->成员名
. 和 -> 操作符用于访问一个结构的成员。如果s是一个结构变量,那么s.a就访问s中叫a的成员。当你拥有一个指向结构的指针而不是结构本身,且欲访问它的成员时,就需要->操作符,这样性能会高一些。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。