操作符
算术操作符
+- * / %
%表示取模,即取余,如int a=9%2,输出为1
移位操作符
移动的是2进制位
右移>> 左移<<
位操作符
按位与& 按位或^ 按位异或|
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
a-=3意思是a=a-3
单目操作符
a+b中+称作双目操作符,因为有2个操作数
所以单目就是1个操作数
!逻辑反操作(把真变假,把假变真)
-负值
+正值
&取地址
sizeof操作数的类型长度(单位为字节)
~对一个数的2进制按位取反
--前置、后置--
++前置、后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换
关系操作符
>= > < <= !=用于测试不等于 ==用于测试等于
逻辑操作符
||逻辑或
&&逻辑与,如 if(a&&b) 需要ab都为真,结果才为真
条件操作符
exp1 ? exp2 : exp3
exp1成立,计算exp2,整个表达式是exp2结果
exp1不成立,计算exp3,整个表达式是exp3结果
逗号表达式
exp1 , exp2 , exp3 ,...expn
从左向右依次计算,表达结果是最后一个算式的结果
下标引用、函数调用、结构成员
[ ] ( ) . ->
工程
操作符
移位操作符
<<1左移操作符,2进制数向左移动一位,如000010变000100,即2变4
#include<stdio.h>
int main()
{
int a=2;
int b=a<<1;
printf("%d\n",b);
return 0;
}
赋值操作符
#include<stdio.h>
int main()
{
int a=2;
a-=2;
printf("%d\n",a);
return 0;
}
单目操作符
!例子
0表示假,非0表示真
#include<stdio.h>
int main()
{
int a=10;
printf("%d\n",!a);
return 0;
}//输出0,因为!把真变假
输入假,!会转为真,非0都为真,规定输出1为真
#include<stdio.h>
int main()
{
int a=0;
printf("%d\n",!a);
return 0;
}//输出1,因为!把假变真
sizeof例子
输出结果为40,因为10个数,每个数4个字节
#include<stdio.h>
int main()
{
int arr[10]={0};
printf("%d\n",sizeof(arr));
return 0;
}
输出结果为4,因为1个数,每个数4个字节
#include<stdio.h>
int main()
{
int arr[10]={0};
printf("%d\n",sizeof(arr【0】));
return 0;
}
输出10
#include<stdio.h>
int main()
{
int arr[10]={0};
int sz=sizeof(arr)/sizeof(arr[0]);
printf("%d\n",sz);
return 0;
}
前置
最后输出11 11
有前置时,先++后使用
#include<stdio.h>
int main()
{
int a=10;
int b=++a;
printf("%d\n",b);
printf("%d\n",a);
return 0;
}
输出结果10 11
有后置时,先使用后++
#include<stdio.h>
int main()
{
int a=10;
int b=a++;
printf("%d\n",b);
printf("%d\n",a);
return 0;
}
逻辑操作符
&&逻辑与,如 if(a&&b) 需要ab都为真,结果才为真
#include<stdio.h>
int main()
{
int a=10;
int b=6;
int c=a&&b;
printf("%d\n",c);
return 0;
}
||逻辑或,如 if(a||b) 需要ab都为假,结果才为假
#include<stdio.h>
int main()
{
int a=0;
int b=1;
int c=a||b;
printf("%d\n",c);
return 0;
}
条件操作符
之前的条件语句知识来写
#include<stdio.h>
int main()
{
int a=7;
int b=1;
int max=0;
if(a>b)
max=a;
else
max=b;
printf("%d\n",max);
return 0;
}
使用条件操作符来写
#include<stdio.h>
int main()
{
int a=7;
int b=1;
int max=0;
max=a>b?a:b;
printf("%d\n",max);
return 0;
}
逗号表达式
#include<stdio.h>
int main()
{
int a=0;
int b=3;
int c=5;
int d=(a=b+2,c=a-4,b=c+2);
printf("%d\n",d);
return 0;
}