【C】操作符(2)

发布于:2022-11-10 ⋅ 阅读:(720) ⋅ 点赞:(0)

赋值操作符

赋值操作符包括=,+=,-=,*=,/=,<<=,>>=,%=,&=,|=,^=
赋值操作符的作用就是可以让你对前面不满意的值重新赋值,比如说下面这个,体重88千克,我们对此非常之不满意,那么我们就重新赋值,多重才满意就改成多少

int main()
{
    int weight=88;
    weight=50;
}

对于其他的,例如+=,其实就是进行一次加法运算,

b=b+5;
b+=5;

这两个是完全等价的,其他用法也一样。

单目操作符

什么是单目操作符?只有一个操作数的符号被称为单目操作符,像之前的 | ,他的两边都要有东西,他就是双目操作符。
单目操作符有
!,-,+,&,sizeof,~,–,++,*,(类型)

!的作用是逻辑反操作,我们知道在计算机语言中,0为假,非0为真,那么当我们在前面有一个变量为假,在下面的使用中我们要让他为真,就使用这个操作符

int main()
{
   int flag=0;
   int a=0;
   if(!flag)
       a++;
   else
       a--;
   printf("a = %d",a);
   return 0;        
}

如上,我们要当!flag为真时a+1,为假a则减一,那么这个程序输出的结果应为1,
在这里插入图片描述
我们可以看到,确实如此。

接下来的-和+就是负值和正值的意思,没什么好说的。

sizeof的作用是计算操作数或者类型长度

int main()
{
	int a = 0;
	
	printf("%d", sizeof(a));
	printf("%d", sizeof(int));

	return 0;

}

a是整型,他的长度就是四,在计算如a这样的长度,可以使用a本身,也可使用他对应的数据类型,sizeof让人看到的第一眼就就觉得他是函数而不是操作符,但是我们可以使用下面的代码,a的括号去掉,,仍旧可行,可以不带括号便说明了他不是函数 ,而int的括号则不能去掉,这是语法规定

int main()
{
	int a = 0;
	
	printf("%d", sizeof a );
	printf("%d", sizeof(int));

	return 0;

}

在这里插入图片描述

~的作用是对一个数的二进制序列按位取反。
这里的按位取反包括符号位,全部0变1或者1变0

–和++是对变量的操作,作用是让变量+1或-1,但是,根据符号的位置不同,符号的运算逻辑也不同,以++举例

int main()
{
	int a = 0;

	int b = a++;
	printf("b =%d\n", b);

	int c = ++a;
	printf("c =%d\n", c);

	return 0;
}

++后置先使用,再++,前置则先++,再使用。上面的代码中,b=a++,因为是后置,所以先使用,把a的值赋给b,此时b=0,a成了1,再向下,++前置,a再加1,然后将值赋给c,最终,b=0,c=2.
在这里插入图片描述

(类型),括号中加数据类型,表示强制转换类型,
在这里插入图片描述
整型变量后面加小数,系统会报错,()可以解决。

int main()
{
	int a=(int)3.1415926;

	return 0;
}

这样就不会有警告了

最后是&和*,这两个一般是一块儿出现的,&表示取地址,*是解引用操作符

int main()
{
	int a = 10;

	&a;

	int* pa;

	*pa = 20;

	return 0;
}

&可以将变量的地址取出,既然取出那就要存放,我们就要使用pa来存放a的地址,在这之前我们要int *pa,这就表示pa这个变量是指针变量,接下来我们就可以用pa来存放a的地址,不过在pa的前面要加一个解引用操作符,他的作用就是访问地址,可以通过pa存放的地址找到他所指向的对象。

关系操作符

关系操作符包括<,<=,>,>=,!=,==
分别表示小于,小于等于,大于,大于等于,不等,相等
这里要特别注意,两个 =才是判断两个数是否相等,=是赋值

逻辑操作符

逻辑操作符包括&&和||
&&是逻辑与,可以说是并且,||是逻辑或,或者的意思。我们一般使用他作为判断语句的条件内容来使用

条件操作符及逗号表达式

条件操作符可以称为三目操作符,有三个操作数,形式为
表达式1?表达式2:表达式3
运行逻辑是如果表达式1成立,则执行表达式2,佛偶这执行表达式3。他可以大大简化我们写代码,

int main()
{
	int a = 3, b = 9;
	int c = 0;

	if (a > b)
		c = a;
	else
		c = b;

	printf("c = %d\n",c);

	return 0;
}

这个代码是输出a和b之间的较大者,判断的逻辑我们写了四行,如果使用条件操作符,

int main()
{
	int a = 3, b = 9;
	int c = 0;

	/*if (a > b)
		c = a;
	else
		c = b;*/

	a > b ? c = a : c = b;

	printf("c = %d\n",c);

	return 0;
}

如上,判断的4行代码只用一行就代替了,并且简单明了。
什么是逗号表达式?实际上就是若干个用逗号分开的表达式,他的运算是从左往右计算,并且将最后一个表达式的结果作为整个过程的最终结果

int main()
{
	int a = 2, b = 6;
	int c = 0;

	if (a = a + b, c = a, b = a + 3, a = a / b, c = a + b)
		printf("c = %d\n", c);

	return 0;
}

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到