C语言学习之旅 【操作符(残缺版)】
发布时间:2022-11-19 11:11:33 303
相关标签: # c++# 数据
1.1 算术操作符
- 除号
要想打印浮点型,需要符号一侧为浮点型,且数据类型为double或者float类型
int main()
{
//int i = 7 / 3;
//printf("%d", i); // 2
double i = 7.0 / 3;
printf("%lf", i); // 2.3333
return 0;
}
- 取模
//取模操作符 的两端必须都为整数
int main()
{
int a = 7 % 3;
printf("%d", a);
return 0;
}
1.2 移位操作符
- 左移/右移操作符
二进制位左移/右移动 n位 右移补位:算术右移补原符号位;逻辑右移补0
int main()
{
//左移操作符
int a = -2;
int b = a << 1;
printf("%d\n", a); //a并没有改变
printf("%d\n", b); // -4
//右移操作符
int c = a >> 1;
printf("%d\n", c); // -1
return 0;
}
原码 ----(符号位不变,其他位按位取反)----> 反码 ----(反码+1)---->补码
1.3 位操作符
& 按位与:同1则1,其余为0 | 按位或 :有1则1 ,无1则0 ^ 按位异或 :相同为0, 相异为1 ==备注:他们的操作数必须都是整数!==
- 实例1.交换两个数
int main()
{
int a = 3;
int b = 5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d, %d", a, b);
return 0;
}
总结:
a ^ a = 0 a ^ b ^ b = a
1.4 单目操作符
!逻辑取反 sizeof 其中的表达式不参与运算
#include
int main()
{
// 一次代码运行需要经过从 test.c 编译 --> 链接 --> 运行 test.exe
short s = 5;
int a = 0;
printf("%d\n", sizeof(s = a + 2)); // sizeof中的参数是在编译过程运行的
printf("%d\n", s); // 实际并未改变a+2的值
return 0;
//输出结果为 2 5
}
~ 按位取反 --> -1的补码是32位全1
文章来源: https://blog.51cto.com/coderusher/5561560
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报