1.赋值操作符: =
复合赋值符:+= -= *= /= &= |= ^= %= >>= <<=
eg: a=a+2→a+=2 a=a>>1→a>>=1
连续赋值:a=b=c(从右向左运行)(不推荐此方法)
2.单目操作符(只有一个操作数)
!:逻辑反操作(真变假,假变真)
eg:
int a=1;
//a为真,进入if
if(a)
{}
//a为假,进入if
if(!a)
{}
+ -:和数学一样
~:二进制位按位取反(所有补码反过来,1为0,0为1)
eg:把整数的二进制数中的某一位随意改成0/1
int main()
{
int a = 13;//假如把第5位的0改为1
// 00000000000000000000000000001101(13的补码)
// 00000000000000000000000000010000(1<<4)
// 两者按位或|,即可让第5位的0改为1
a |= 1 << 4;//a=29
printf("a= %d\n", a);
//此时若把我改的1再改回去
//00000000000000000000000000011101(29的补码)
//11111111111111111111111111101111(~(1<<4))
//两者按位与&,即可让第五位由1变为0
a &= ~(1 << 4);
printf("a= %d", a);
return 0;
}运行结果:a=29
a=13
++ -- :前置/后置(a++:先使用,然后a=a+1 ;++a:先是a=a+1,再使用a)
eg:int main()
{
int a = 10;
printf("%d\n", a++);//打印结果:10,a=11
printf("%d\n", ++a);//打印结果:12,a=12
printf("%d\n", a--);//打印结果:12,a=11
printf("%d\n", --a);//打印结果:10,a=10
return 0;
}
&:取出变量地址
*:解引用操作符(直接初步了解指针时接触过,不再举例)
(类型):强制类型转换
eg:int main()
{
int a = (int)1.23;//1.23本是double类型,用(int)后,把double强制转化位int类型,也就是直接扔掉后面的小数
printf("%d", a);//a=1
return 0;
}
sizeof():求类型或者变量的大小,单位byte
eg:
结果应该是 40 4 10 4 注意不是40 4 10 1
此函数里的两个形参都是指针,而指针所存放的是地址,地址的大小 无论它的类型是什么,大小都是4/8
3.关系操作符
4.逻辑操作符
eg:
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
//&&两边都为真,才为真;有假即为假
//&&左边为假,右边不再计算
i = a++ && ++b && d++;
printf("a=%d ,b=%d ,c=%d ,d=%d ", a, b, c, d);
return 0;
}结果为1 2 3 4
int main()
{
int i = 0, a = 0, b = 2, c = 3, d = 4;
//||两边都为假,才为假;有真即为真
//||左边为真,右边不再计算
i = a++ || ++b || d++;
printf("a=%d ,b=%d ,c=%d ,d=%d ", a, b, c, d);
return 0;
}结果为1 3 3 4
5.条件操作符(三目操作符)
exp1 ?exp2 :exp3
eg
int main()
{
int a = 2;
int b = 0;
if (a > 3)
{
b = 5;
}
else
b = -5;
return 0;
}等同于(a>3)?b=5:b=-5
解释:a>3如果为真,那么b=5,否则b=-5
另一种写法:b=(a>3) ? 5 : -5
6.逗号表达式
exp1,exp2,exp3(从左向右依次计算,整个表达式结果是最后一个表达式的结果)
eg1:
int main()
{
int a = 1;
int b = 2;
int c = (a > b, a = b + 10, a, b = a + 1);//c=13
printf("%d", c);
return 0;
}eg2:
7.下标引用 函数调用
下标引用操作符:[]
arr[9]等同于9[arr]
函数调用操作符:
标签:15,int,eg,函数调用,++,单目,操作符,printf,main From: https://blog.csdn.net/2301_81379856/article/details/136811144