位操作符是直接对数字二进制位进行操作的工具,在底层编程中非常实用:
int a = 0b1010; // 10
int b = 0b1100; // 12
printf("%d", a & b); // 输出8(0b1000,保留共同为1的位)printf("%d", a | b); // 输出14(0b1110,合并所有1的位)printf("%d", a ^ b); // 输出6(0b0110,不同的位保留1)printf("%d", 8 << 1); // 16(左移1位=×2)
printf("%d", 16 >> 2); // 4(右移2位=÷4)除了基本的=,复合赋值操作符能让代码更简洁:
int x = 10;
x += 5; // 等价于 x = x + 5 → x=15
x *= 3; // 等价于 x = x * 3 → x=45
x &= 0b111; // 等价于 x = x & 0b111 → 保留低3位条件操作符?:可以简化简单的if-else判断:
int score = 75;
// 格式:条件 ? 满足时的值 : 不满足时的值
char* result = (score >= 60) ? "及格" : "不及格";
printf("%s", result); // 输出"及格"在printf中用特定格式符可直接输出不同进制:
int num = 255;
printf("十进制:%d\n", num); // 255
printf("八进制:%o\n", num); // 377(前缀0可省略)
printf("十六进制:%x\n", num); // ff(小写)
printf("十六进制:%X\n", num); // FF(大写)十六进制因与二进制转换方便(1位16进制=4位二进制),常用于表示内存地址或颜色值:
int color = 0xFF0088; // 红色(FF)、绿色(00)、蓝色(88)的混合色0和-0两种表示以8位整数为例,计算3 + (-2):
0000001111111110(原码10000010→反码11111101→加1得补码)00000011 + 11111110 = 10000000100000001(即1),计算正确!利用补码特性可以简化操作,比如取相反数:
int a = 5;
int b = ~a + 1; // 等价于 -a(补码的取反加1就是相反数)
printf("%d", b); // 输出-5通过这些基础概念的理解,能帮你更深入掌握C语言的底层逻辑,为后续学习指针、内存操作打下基础。
意气风发,漫卷疏狂 学习是成长的阶梯,每一次的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。 如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。 您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力! 愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
我是意疏 下次见!