详解C操作符总结

以下是阿鲤对c中操作符的总结,希望可以帮助到大家
目录
1:算术操作符
2:移位操作符
3:位操作符
4:赋值操作符
5:单目操作符
6:关系操作符
7:逻辑操作符
8:条件操作符
9:逗号表达式
10:下标引用,函数调用和数据结构

一;算术操作符

      • / %
        特殊举例:
1:#include<stdio.h>
		int main()
		{
			int a = 1;
			int b = 1++;
			int c = ++1;
			printf("%d,%d,%d\n",a,b,c);
		}  // 1 ,1,2
			//总结:++在前先加加,++在后后加加
2:#inciude<stdio.h>
		int main()
		{
			int a = 10;
			float b = 5.0;
			int c = a / b;	
			printf("%d\n",c);
	}		// c = 2.0  / 时如果有一个整数和一个浮点数想/结果为浮点数

二;移位操作符
右移 (>>) 左移(<<)(二进制移位)
>> 相当于除以二
1,逻辑移位 左边用0填充,右边丢弃
2,算术移位 左边用原值符号位填充,右边丢弃
<< 相当于乘以二
1,左移之后前面补0;
三;位操作符
& 按位与 | 按位或 ^按位异或(他们的操作数必须是整数)
& 按位与
相当于乘法(二进制)
| 按位或
有1则1,无1则0
^按位异或
相异为1,相同为0
特殊举例:

1:#include<stdio.h>
		int main()
		{
			int a = 20;
			int b = 10;
			a = a ^ b;
			b = a ^ b;
			a = a ^ b;
			printf("%d,%d\n",a,b);\\ 10;20 交换了a b
		}
2:#include<stdio.h>
		int main()
		{
			int a = -1;
			int i = 0;
			int count = 0;
			while(a)
			{
				count ++;
				a = a & (a - 1);
			}
			printf("二进制中一的个数 = %d",count);
		}		//输出二进制中一的个数

四:赋值操作符
=,+=,-=, /=, %=, >>=, <<= , &=, !=, ^=
举例:

#include<stdio.h>
	int main()
	{
		int a = 10;
		a += 2; // a = a + 2
		printf("%d",a);
	}//输出结果 12  

五:单目操作符
! , - ,+ ,& ,sizeof ,~ ,-- ,++ , * ,(类型)
逻辑非,负值,正值,取地址,操作数类型长度,对一个数按位取反,前置后置–,++,解引用操作符,强制类型转换、
特殊举例:

1: #include<stdio.h>
		int main()
		{
			int a = 10;
			int *p = &a;
			int **pp = &p;
			int ***ppp = &pp;
			***ppp = 99;
			printf("%d\n", a);
			system("pause");
			return 0;
		}//输出a = 99;
2:	#include<stdio.h>
	int main()
	{
		int a = 10;
		int *p = NULL;
		p = &a;
		*p = 10;//预防野指针
		return 0;
	}
3: #include<stdio.h>
	int main()
	{
		int a = -1;
		a = ~a;
		printf("%d\n", a);
		system("pause");
		return 0;
	} // 0
4: #include<stdio.h>
	//()强制类型转换
	int main()
	{
		double d = 10.9;
		int a = (int)d;
		system("pause");
		return 0;
	} //将d由double强制转换为int
5:#include<stdio.h>
	//sizeof和数组
	void test1(int arr[])
	{
		printf("%d\n", sizeof(arr));//4
	}
	void test2(char ch[])
	{
		printf("%d\n", sizeof(ch));//4
	}
	int main()
	{
		int arr[10] = { 0 };
		char ch[10] = { 0 };
		printf("%d\n", sizeof(arr));//40
		printf("%d\n", sizeof(ch));//10
		
		system("pause");
		return 0;
	}

六:关系操作符

, >= ,< ,<= ,!= ,==
大于,大于等于,小于,小于等于,不等于,等于
! 注意 == 在判断是容易出错

七:逻辑操作符
&& , ||
逻辑与 ,逻辑或(均为短路语句)

八:条件操作符:
a ? b : c
//意思为如果a为真就执行b否则执行c;

九:逗号表达式:
a,b,c,…
特殊举例:

1:#include<stdio.h>
	int main()
	{
		int a = 1;
		int b = 2;
		int c = (a > b, a = b + 10, a ,b = a+1);
		printf("%d\n",c);//输出 c = 13
		return 0;
	}
2://可将
		a = get_val()
		count_val(a);
		while(a>0)
		{
			a = get_val();
			count_val(a);
		}
//改成
		while(a = get_val(),count_val(a),a>0)
		{
		}
	//逗号表达式输出结果为最后一个表达

十:下标引用,函数调用和数据结构
1;下表引用操作符
操作数 :一个数组名 + 一个索引值
int arr[10];
arr[9] = 10;
[ ] 的两个操作数是arr和9;
2;函数调用操作符,
3;访问一个结构成员
特殊举例

#include<stdio.h>
	struct  stu
	{
			char name[10];
			int age;
			char sex[5];
			double score;
	};
	void set_age1(struct Stu stu)
		{
		 stu.age = 18;
		}
	void set_age2(struct Stu* pStu)
		{
		 pStu->age = 18;//结构成员访问
		}
	int main()
		{
		 struct Stu stu;
 		 struct Stu* pStu = &stu;//结构成员访问
 
		   stu.age = 20;//结构成员访问
 	   	 set_age1(stu);

 	   	pStu->age = 20;//结构成员访问
 		set_age2(pStu);
		 return 0;
		 }
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值