0
点赞
收藏
分享

微信扫一扫

C语言 操作符详解<1>

C语言 操作符详解

笔记来源于b站
发布博文只是为了记录学习…无盗窃他人视频之意…

1.算术操作符:

在这里插入图片描述

1.1 " \ "除数:

在这里插入图片描述
" \ " 法中 除数和被除数 至少要有一个 小数…输出才是小数…

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
 double a = 5/2.0;//除数和被除数至少有一个小数...
 double b = 5/2;
 printf("%f\n %f",a,b);
  return 0;
}

1.2 " % " 取模:

取模 两边都要是整数…

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
 int c = 5%2; 
 printf("%d\n",a,b,c);
  return 0;
}

总结:
1." \ " 法中 除数和被除数 至少要有一个 小数…输出才是小数…
2.取模 两边都要是整数…

2.移位操作符:

2.1 右移操作符:

在这里插入图片描述
1. 算术右移:
右边丢弃,左边补原符号位…
在这里插入图片描述
为啥输出的是"-1"…涉及到源码、反码、补码:
(内存里面存的都是负数的补码形式…)

正数的源码 反码 补码 都是 自己本身…
负数的源码 除了符号位 全部取反 变反码 反码+1 变补码…

 int a = -1;
 a >> 1;
 printf("%d\n",a);//输出-1

2. 逻辑右移:
右边丢弃,左边补0…

2.2 左移操作符:

左移:
左边舍弃,右边补“0”…

总结:

1.右移:
1.1 算术右移:
右边丢弃,左边补原符号位…

1.2 逻辑右移:
右边丢弃,左边补0…

2.左移:
左边舍弃,右边补“0”…

3.位操作符:

在这里插入图片描述

3.1面试题(不使用第三变量 交换两个数值):

3.1.1 加减赋值:

有缺陷…可能会溢出…
在这里插入图片描述
在这里插入图片描述

3.1.2 异或的方式:

在这里插入图片描述

 int a = 3;
 int b =5;
 a= a^b;
 b=a^b;
 a=a^b;
 printf("%d\n%d\n",a,b);

3.2 面试题(内存中存储的二进制中 “1” 的个数):

3.2.1 取模 “%” 操作:

   int num  =9;
   int count=0; 
  while(num)
  {
    if(num%2 ==1 )
		count++;
    num = num/2;
  }
 printf("%d\n",count);

3.2.2 移位按位“&” 操作:

   int num  =9;
   int count=0; 
   int i;
	for(i=0;i<32;i++)
	{	if((num>>i)&1==1)
		 count++;
	}
  //while(num)
  //{
  //  if(num%2 ==1 )
		//count++;
  //  num = num/2;
  //}
  printf("%d\n",count);

4.赋值操作符:

4.1 “ = ”:

4.2 复合赋值:

4.3 单目操作符:

在这里插入图片描述

	int arr[10]={0};
	printf("%d\n",sizeof(arr));//一个int 4个字节...则输出40
举报

相关推荐

0 条评论