C语言:2026.1.15

1.操作符
+-*/
符合+= -= *= /= %=
单目++ --
逻辑运算符&& ||
2.移位操作符(移动二进制位)
*只能操作整数;
左移<< 相当于2
左边抛弃,右边补0
*右移>> 相当于/2
逻辑右移 左边补0,右边抛弃
算数右移 左边补符号位,右边抛弃
负数向上取整;
3.复合
<<= >>=
4.位操作符
&按位与 两个都为1;
|按位或 一个为1;
^按位异或 相同为0;不同为1;
~按位取反
0和n | 自己
a^a=0
0^a=a
5.不借助新的变量,实现两个整数的交换;
a=a^b; a=a^b
b=a^b; b=abb b=a
a=a^b; a=aba=b
6.求一个数n,二进制序列中,1的个数;
方法1:
int main()
{
int n = 0;
scanf("%d", &n);
int count = 0;
while (n)
{
if (n % 2 == 1)
{
count++;
}
n >>= 1;
}
printf("%d", count);
return 0;
}
方法2:
int main()
{
int n = 0;
scanf("%d", &n);
int count = 0;
for (int i = 0; i < 32; i++)
{
if ((n & (1 << i)) != 0)
{
count++;
}
}
printf("%d", count);
return 0;
}
方法3:
int main()
{
int n;
scanf("%d", &n);
int count = 0;
while (n)
{
count++;
n = n & (n - 1);//消除掉n二进制序列中最后一个1;
}
printf("%d", count);
return;
}

7.逗号表达式:从左向右依次执行,整个表达式的结果是最后一个表达式的结果;
8.下标访问操作符,需要两个操作数[]
9.函数调用操作符,操作数可能有很多个()
10.操作符的优先级,结合性;
11.单目运算符右结合;赋值;三目;
12.表达式求值(缺省就是默认)
整形提升:无符号位补0
有符号位补符号位
13.算数转换:
long double
double
float
unsigned long int
long int
unsigned int
int

posted @ 2026-01-15 22:56  白白0419  阅读(2)  评论(0)    收藏  举报