码迷,mamicode.com
首页 > 其他好文 > 详细

C(操作符)

时间:2021-05-24 13:29:31      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:左移   一个   main   临时   创建   can   必须   strong   a+b   

算术操作符(+,-,*,/,%)

  1. 除了%操作符之外,其他几个操作符可以用于整数和浮点数。

  2. 对于/操作符如果两个操作数都为整数,执行整数除法,而只要有浮点数,执行的就是浮点数除法。

  3. %操作符的两个操作数必须为整数,返回的是整数之后的余数。

移位操作符(左移<<,右移>>)

  • 只作用于整数

  • 移动的都是二进制的位置

1. 算术右移:右边丢弃,左边补原符号位**(二进制最左边为0是正数,是1为负数)

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

3. 左移:左边丢弃,右边补0**

位操作符(&,|,^,~)

  • 他们操作的必须是整数
  • 以二进制运算

&:按位与:都为1结果为1,否则为0

|:按位或:有1结果为1,都为0结果为0

^:按位异或:对应的二进制位相同为0,相异为1

~:按位取反(单个数进行运算):为0的数为1,为1的数为0

异或面试题:(不能创建临时变量(第三个变量),实现两个数的交换)

示例:
#include<stdio.h>
int main()
{
	int a = 3;
	int b = 5;
	a = a ^ b;
	b = a ^ b;
	a = b ^ a;
	printf("a=%d  b=%d\n", a, b);
	return 0;
}
示例结果:a=5 b=3
例题:(计算一个数二进制有几个1)
#include<stdio.h>
int main()
{
	int num;
	int count = 0;
	scanf("%d", &num);
	for (int i = 0; i < 32; i++)
	{
		if ((num >> i) & 1)
			count++;
	}
	printf("%d\n", count);
	return 0;
}

++&&--

  • 前置++(--):先加加(减减),在使用
  • 后置++(--):先使用,在加加(减减)

360笔试题:

#include<stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;//一个为假都为假,后面则不再进行判断
	printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
	return 0;
}
结果:a = 1 b = 2 c = 3 d = 4
#include<stdio.h>
int main()
{
	int i = 0, a = 1, b = 2, c = 3, d = 4;
	i = a++ || ++b || d++;//一个为真都为真,后面则不在判断
	printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
	return 0;
}
结果:a = 2 b = 2 c = 3 d = 4

逗号表达式(,)

  • 从左至右依次进行,结果为最后一个表达式的结果
示例:
#include<stdio.h>
int main()
{
	int a = 1;
	int b = 3;
	int c = 0;
	c = (a>b,a = a+b,a,b = a+b);
	printf("c=%d\n", c);
	return 0;
}
示例结果:c = 7

C(操作符)

标签:左移   一个   main   临时   创建   can   必须   strong   a+b   

原文地址:https://www.cnblogs.com/jiabaolu/p/14775663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!