标签:左移 一个 main 临时 创建 can 必须 strong a+b
除了%操作符之外,其他几个操作符可以用于整数和浮点数。
对于/操作符如果两个操作数都为整数,执行整数除法,而只要有浮点数,执行的就是浮点数除法。
%操作符的两个操作数必须为整数,返回的是整数之后的余数。
只作用于整数
移动的都是二进制的位置
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;
}
#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;
}
#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;
}
#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;
}
#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;
}
标签:左移 一个 main 临时 创建 can 必须 strong a+b
原文地址:https://www.cnblogs.com/jiabaolu/p/14775663.html