单目操作符
sizeof操作符
sizeof是用来计算类型和数组的大小的(单位是字节)
接下来是代码例子,我们先写一个计算整数类型的字节大小,代码如下
#include <stdio.h>
int main()
{
int a = 10;
printf("a字节的大小是:%d\n", sizeof(a));
return 0;
}
按ctrl+F5运行结果如下
再来一个计算数组大小的例子
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6};
printf("数组arr的字节大小是:%d\n",sizeof(arr));
return 0;
}
结果如下
当我们得知了数组的字节大小时,我们就可以得知数组里面有几个元素。代码如下
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6};
printf("数组里面元素个数是:%d\n",sizeof(arr)/sizeof(arr[0]));
return 0;
}
结果如下
~操作符
~操作符的作用是(按位(二进制)取反)
直接整代码
#include <stdio.h>
int main()
{
int a = 0;
int b = ~a;
printf("b的结果是%d\n",b);
return 0;
}
结果为啥是-1呢,这就涉及到了原码,反码,补码的知识了。
++操作符
++操作符分为前置++和后置++
前置++ (作用先++,再使用)就是a的值先加1,然后得出的值再赋给b
#include <stdio.h>
int main()
{
int a = 10;
int b = ++a;
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
后置++(先使用,再++)就是先把a的值赋给b然后a在++
#include <stdio.h>
int main()
{
int a = 10;
int b = a++;
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
--操作符
--操作符分为前置--和后置--
前值--(先--,在使用)就是a的值先-1,然后再把得到值赋给b
#include <stdio.h>
int main()
{
int a = 10;
int b = --a;
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
后值--(先使用 ,再--)就是先把a的值赋给b,然后a在-1
#include <stdio.h>
int main()
{
int a = 10;
int b = a--;
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
可以看出不管是++还是--,前置的结果都是一样的。
(类型)强制类型转换
当我们使用整数类型(int)定义了一个变量(a)然后我们给a赋值3.14,(正常情况下a应该被赋值整数)这显然是不合理的,但当我们使用(int)这样的操作符,强制转化成了整数类型。代码如下
#include <stdio.h>
int main()
{
int a = (int)3.14;
printf("%d\n",a);
return 0;
}
逻辑操作符
&&逻辑与
在c语言中数字0表示假,非0表示真
&&的作用就是对于给定的数,只要有一个是0,那么最终显示的结果就是0,只有给定的数都是都是非0,结果才是1 ,代码如下
#include <stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = a && b;
printf("c=%d\n",c);
return 0;
}
||逻辑或
对于给定的值,全是0,结果才显示0,反之,结果就是1,代码如下
#include <stdio.h>
int main()
{
int a = 0;
int b = 1;
int c = a || b;
printf("c=%d\n",c);
return 0;
}
条件操作符 exp1 ? exp2 : exp3
如果exp1?为真,则执行exp2.若为假执行exp3
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
int max = (a > b ? a : b);
printf("max=%d\n",max);
return 0;
}