第七章:C语言的操作符

       说起操作符大家都不陌生,从我们最初的 +  -  c   *  /  加减乘除,到更加深奥的操作符,而今天我要有完整的系统来理清楚C语言的操作符到底有什么,和它们相关的用法,话不多说,直接走进今天的主题----C语言的操作符。

 一:算数运算符

+      -      *      /     %(取模)

这里不细讲加减乘,加减乘和数学是一样的,这里只谈   /   %。

 二:移位操作符

<< (左移操作符)  >>  (右移操作符)---移动是二进制哟(移的是补码)(在32比特位下移动)

 有些编译器不支持移动负数,移动后不改变自身

三:位操作符 (计算的是二进制) 

&  (相同为 1 即为 1 ,有 0 则为 0 )

|   (有 1 则为 1 ,两个相同时则为0)

^    (相同为 0 ,相异为 1 )

①  &  |   ^ 计算

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int x1, x2, x3;
	// a 的二进制 00000000 00000000 00000000 00000001
	// b 的二进制 00000000 00000000 00000000 00000010

	x1 = a & b;
	// a  的二进制 00000000 00000000 00000000 00000001
	// b  的二进制 00000000 00000000 00000000 00000010
	// x1 的二进制 00000000 00000000 00000000 00000000
	x2 = a | b;
	// a  的二进制 00000000 00000000 00000000 00000001
	// b  的二进制 00000000 00000000 00000000 00000010
	// x2 的二进制 00000000 00000000 00000000 00000011
	x3 = a ^ b;
	// a  的二进制 00000000 00000000 00000000 00000001
	// b  的二进制 00000000 00000000 00000000 00000010
	// x3 的二进制 00000000 00000000 00000000 00000011
	//x1 = 0,x2 = 3,x3 = 3
	printf("x1 = %d,x2 = %d,x3 = %d\n", x1, x2, x3);
	return 0;
}

②不能创建变量(第三个变量),实现两个数的交换

#include<stdio.h>

//方法一:
//int main()
//{
//	int a = 1;
//	int b = 2;
//	a = a + b;
//	b = a - b;
//	a = a - b;
//	printf("a = %d,b = %d\n", a, b);
//	return 0;
//}
//当数字很大时就合适了

//方法二:
int main()
{
	int a = 1;
	int b = 2;
	a = a ^ b;  
	b = a ^ b; //看成 b = ( a ^ b ) ^ b,这里 b 和 b就可以消除
	a = a ^ b; //这里其实就变成 a = ( a ^ b ) ^ a,这里 a 和 a就可以消除
	printf("a = %d,b = %d\n", a, b);
	return 0;
}

四:赋值操作符( = )

+=     -=     *=      /=     %=     >>=    <<=     &=     |=       ^=(复合赋值符)

#include<stdio.h>
int main()
{
	float weight = 55.5f;//加 f 的目的使区分double
	double high = 1.78;
	int age = 18;

	return 0;
}

//记住 C语言的 = 和 == 是两码事
// a =  1  赋值运算符
// a == 1 是判断 a 是否等于1

五:单目操作符

 

 六:关系操作符

>              >=             <           <=           !=          ==

这里记住          a =  1  赋值运算符            a == 1 是判断 a 是否等于1

七:逻辑操作符

&& (并且的意思)                                 ||  (或者的意思)

#include<stdio.h>

//int main()
//{
//	int a = 0;
//	int b = 0;
//	if (a == 0 && b == 0)
//	{
//		printf("hehe\n");
//	}
//	else
//	{
//		printf("haha\n");
//	}
//	return 0;
//}
//打印出hehe

int main()
{
	int a = 0;
	int b = 0;
	if (a == 0 || b == 1)
	{
		printf("hehe\n");
	}
	else
	{
		printf("haha\n");
	}
	return 0;
}
//打印出hehe

八:条件操作符

(   语句 1      ?  (语句 2 :语句 3)) 如果语句1为真就执行语句2,否则执行语句3

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 1;
	int c = a > b ? a : b;
	//如果 a 大于 b 就把 a 的值赋给 c,否则就把 b 的赋给 c
	printf("%d\n", c);
	return 0;
}
//打印出:1

九:逗号表达式

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

#include<stdio.h>

int main()
{
	int a = 1;
	int b = 2;
	int c = (a > b, a = b + 10, a, b = a + 1);
	//这里 a > b 没有什么关系,a = b + 10 = 2 + 10 = 12
	//这里 a 没有什么关系,b = a + 1 = 12 + 1
	//最后 c = b
	printf("%d\n", c);//打印出:13
	return 0;
}

十:下标引用(已讲),函数调用(已讲)和结构体成员

下标引用:[  ] 

函数调用:函数名();

结构体成员:  .    ->(这里不细讲,后面会详细介绍)

关于操作符的优先级图片

        不知不觉就到了尾声呢,咱们第七章的知识点就到这里了啦,作为小白的我,可能写的不是很好,不对的地方还请大佬大佬指点指点。 

猜你喜欢

转载自blog.csdn.net/AAlykk/article/details/130657060
今日推荐