操作符:
一,算数操作符
+ - * / %
1.浮点数不能用于取模运算
2. 取模操作的两个操作数必须是整数,即返回整除之后的余数
3./(除法)运算只要有浮点数参与,就是浮点数除法
4.除法运算除数不能为0,也不能用0去进行取模操作
5.%2就等于/2,也可以当做取一个数的最低位比特数
二,移位操作符
语言
方法
9136
o44qAU3GrX
4MW4V
1598
2009.08.04 19-26-56
>> 右移操作符
<< 左移操作符
1.i>>n,即i右移n位,相当于i除以二的n次方
2.i<
3.计算机的运算操作在计算机的cpu中,变量是在内存开辟空间进行存储数 据,并且以这个数的补码存储
4.左移操作时,左边抛弃右边补0即可
5.右移操作时,分为逻辑右移和算数右移。
6.逻辑右移即无符号数操作,右边抛弃,左边补0;
7.算数右移,右边抛弃,左边补算数位,即正补0负补1。
8.不要一开始就左移右移负数
三,位操作符
&(按位与) | (按位或) ^(按位异或)
1.按位,即按比特位一一对应
2,使用位操作符时必须是两个同等类型的整数
3,任何数异或0结果为其自身
4,任何数或1结果为其自身
5,任何数与1结果为其自身
6,任何数与0结果为0
四,赋值操作符
=
可以用于变量初始化,或者给变量重新赋值操作,比较容易操作。
五,复合赋值符
+= … -=… *=… /=… %= …>>=…>>=…&=…|=…^=…
这些运算符可以写成复合的效果
六,单目操作符
!(逻辑反操作) -(负值) +(正直)·&(取地址)
sizeof(操作符的类型长度,以字节为单位)
~(对一个数的二进制进行按位取反)
++(前置++ 后置++)
*(间接访问操作符,解引用操作符)
(类型)强制类型转换
除0以外,其余数取逻辑反即为0
~按位取反 即对应二进制数比特位逐个取反
变量的三个构成部分:空间+内容+地址
sizeof()不是函数,是操作符。
强制类型转换只是改变我们对这个数的看待方式
指针是一个地址,*p=&a,p里面存的是a的地址,*p就是a
变量的空间称为变量的左值,变量的内容称为变量的右值。
没有初始化的指针称为野指针(悬垂指针)
‘NULL’ ,’ \0’,‘0’,都是0;
七.逻辑操作符
&&(逻辑与)
||(逻辑或)
1.连接两个表达式
2.&&,左右两个均为真才为真
3.||,有一个表达式为真即为真
4 多个表达式逻辑与,从左往右只要有一个为假,即后面不再执行
#include
#include
int main(){
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++&&++b&&d++&&c++; /*l逻辑与操作符,a为0即为假, 后面表达式不再执行,a先判断后自增一*/
printf("i=%d\n,a=%d\n,b=%d\n,c=%d\n,d=%d\n", i, a, b, c, d);
system("pause");
}
5,多个表达式逻辑或,从左往右只要有一个为真,即后面不再执行
#include
#include
int main(){
int i = 0, a = 0, b = 2, c = 3, d = 4;
i = a++||++b||d++||c++; /*l逻辑或操作符,a为0即为假,a先判断后自 增一, 接着++b为真,b是先自增后判断,后面表达式不再执行*/
printf("i=%d\n a=%d\n b=%d\n c=%d\n d=%d\n", i, a, b, c, d);
system("pause");
}
八,条件操作符
exp1 ? exp2:exp3
1,exp1表达式成立则exp2,不成立则exp3;
#include
#include
int test(int a1, int b1)
{
return(a1 > b1 ? a1 : b1); /*(条件操作符)三目表达式求两个数中较大值*/
}
int main(){
int a = 1, b = 2;
int n = test(a, b);
printf("%d", n);
system("pause");
}
九,逗号表达式
(exp1,exp2,>>>>>>,expn)
1.括号内表达式均会执行,但是以最后一个条件值为准。
#include
#include
int main(){
int a = 1, b = 2;
int i = (a + b, a*a, b*b, 1000); /*逗号表达式*/
printf("%d", i);
system("pause");
}
十,下标引用,函数调用
1.下标引用操作符
操作数:一个数组名+一个索引值
#include
#include
int main(){
int arry[3] = { 1, 2, 3 };
arry[1] = 12; /*[]下标引用操作*/
printf("%d", arry[1]);
system("pause");
}
2.( )函数调用操作符
接收一个或者多个操作数:第一个操作数是函数名,剩余操作数就是传递给函数的参数。
#include
#include
int test(int value1, int value2)
{
printf("%d+%d=%d", value1, value2, value1 + value2);
}
int main(){
int a = 1, b = 2;
test(a, b); /*()函数调用操作符 :函数名test, 还有传递给函数的两个参数啊a,b*/
system("pause");
}