如a+b有两个操作数的叫双目操作符
如 !a 叫单目操作符
值得一提的符号
%
int main()
{
int a = 8 % 6;//%取余数
printf("%d", a);
return 0;
}
<<
int main()
{
int b = 456 << 1;//指它的二进制位向左移一位,基本可以等效为数字翻倍
printf("%d", b);
return 0;
}
>>同理把数字除2
+= -= %=
!为反逻辑
0为假 非0为真
int main()
{
int b = 456 >> 1;
printf("%d", !b);//这样运行的b结果为0
return 0;
}
sizeof也是操作符 计算类型或变量的大小
sizeof不是函数
int main()
{
int a = 0;
printf("%d\n", sizeof(long long ));//8
printf("%d", sizeof(a));//4 a的括号可以省略
return 0;
}
sizeof计算数组总大小 单个数大小 数组个数 单位是字节
int main()
{
int a[30] = { 1,2 };
printf("%d\n", sizeof(a));//120
printf("%d\n", sizeof(a[0]));//4
int b = sizeof(a) / sizeof(a[2]);//求数组的个数
printf("%d", b);//30
return 0;
}
~ 把数字二进制中所有是1的变为0,0变为1(可等同于数字加一再乘负一)
int main()
{
int a = 100;
printf("%d", ~a);
return 0;
}
关于++的前置和后置
int main()
{
int a = 10;
int b = ++a;//结果是11 11。 因为++前置 先++,后使用。
printf("%d\n", a);
printf("%d", b);
return 0;
}
后置++ 结果是a=11 b=10 先使用,后++
强制类型转换
#include<stdio.h>
int main()
{
int a = (int)114.514;//在这里加int避免警告,强制变为整数
//个人感觉这个字符实在是不知所谓
printf("%d\n", a);
return 0;
}
&&并且 ||或者
#include<stdio.h>
int main()
{
int a = 10;
int b = 5;
int c = a && b;
printf("%d\n", c);//结果为1,只要a和b有一个为0结果就为0
//不要紧,两个我都一样的...
return 0;
}
||则是有一个为真则结果为1 只有所有结果为0时结果才为0
关于三目操作符
输出最后一个式子的结果为3
[]
= ==
int main()
{
int a = 0;
for (a = 0; a < 10; a++)
if (a = 5)//= 是赋值 ==是等于
printf("%d", a);
//这个函数的结果是5的死循环
return 0;
}