C语言操作符学习

1.移位操作符(右移、左移)

#include <stdio.h>

int main()
{
   
	int a = 16;
	int b;
	b= a>> 1;//右移操作符,向右移动二进制一位,前面补的是原数的符号
	//正整数的原码,反码,补码相同
	int c=-16;
	int d;
	d=c>>1;
	//负整数的,需要先得到补码,再移动一位,首位补原数符号后,-1取反得到原码,即数值
   printf("%d\n%d\n",b,d);
   //<<左移规则简单,最左边(首位)丢弃,右边(末尾)补0即可
   return 0;
}

2.按位与&、或 |、异或 ^

#include <stdio.h>

int main()
{
   
	int a = 3;//011
	int b = 5;//101
	int c =a&b;//001—1  按(二进制)位“与”,同为1为1
	int d =a|b;//111—7  按位“或”,同为0为0
	int e =a^b;//110-6   按位“异或”,相同为0.相异为1
	printf("%d\n%d\n%d\n",c,d,e);
   return 0;
}

3.赋值操作符

对变量赋值(常见)

复合赋值符:

#include <stdio.h>

int main()
{
   
	int a = 3;
	a += 2;// -= , /= , *= , %=  
	a = a>>1;// <<
	a >> =1;
	a = a&1;// ^  |
	a &= 1;
   return 0;
}

4.单目操作符(只有一个操作数)

    int a = 3;
	!a ;//逻辑反操作
	-a ;
	+a ;
	int* p = &a;//取地址操作符
	*p =5;//解引用操作符
	sizeof(a);//计算变量所占空间的大小
	~a;//按二进制位取反
	int a=1;//存储的是补码
	//00000000000000000000000000000000--正整数原码反码补码相同
	~a
	//11111111111111111111111111111111--取反,补码
	//11111111111111111111111111111110--反码,-1得到反码
	//10000000000000000000000000000001—原码,按位取反、符号位不动,得到原码
	printf("%d\n",~a);//打印原码
    ++   -- 
    ++a;//前置++,先++,再使用
    a++;//后置++,先使用,再++
    (类型) ;//强制类型转换
    int a =(int)3.14;//强制转换成int

5.关系操作符

>
>=
<
<=
==

6.逻辑操作符

&&逻辑与
||逻辑或

按位与& 和 逻辑与&& 的区别:按位与 是对二进制进行操作,逻辑与 是对数据本身真1假0判别

逻辑操作符有短路特性,如果一数为0,则逻辑与为0,后面内容不需要算;同样的,如果一数为真,则逻辑或为真,后面内容不需要算

7.条件操作符(三目操作符)

exp1 ? exp2 : exp3

exp1为真,执行exp2语句;exp2为假,执行3语句

8.逗号表达式

exp1,exp2,exp3.....exp n,用逗号隔开各个表达式,由左向右顺序执行,整个表达式结果是全部运行结束后最后一个表达式给出的结果

#include <stdio.h>

int main()
{
   int a=2;
	int b=3;
	int c = (a>b,a=b+13,a,b=1+a);//17,全部运行,c的结果是在最后一个逗号给出的值
   printf("%d\n",c);
   
   return 0;
}

9.下标引用操作符 [ ] 

10.函数调用操作符() get_max(a,b)求最大值函数,调用函数时用的()即操作符

11.结构体

#include <stdio.h>
//创建了一个结构体类型Struct Stu
Struct Stu
{

  char name[20];
  int age;
  char num[20];
}


int main()
{
   int a=10;
//使用Struct Stu 这个结构体类型创建了一个变量:学生对象s1,并给予初始化
	Struct Stu s1 = {"张三",23,"2202047"};
  printf("%s\n",s1.name);
    printf("%d\n",s1.age);
	 printf("%s\n",s1.num);//结构体变量 . 成员名
   return 0;
}
#include <stdio.h>
//创建了一个结构体类型Struct Stu
Struct Stu
{

  char name[20];
  int age;
  char num[20];
}

int main()
{
   int a=10;
//使用Struct Stu 这个结构体类型创建了一个变量:学生对象s1,并给予初始化
	Struct Stu s1 = {"张三",23,"2202047"};
	Struct Stu* p=&s1;
	printf("%s\n",p->name);//->箭头和“点”应用目的相同, 结构体指针->成员名
  //printf("%s\n",s1.name);
    //printf("%d\n",s1.age);
	 //printf("%s\n",s1.num);//结构体变量 . 成员名
   return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值