当前位置: 首页 > article >正文

C/C++中 <<与<<=的介绍和区别

在C语言或类似语言中,bit << 1 和 bit <<= 1 都涉及到左移操作,但它们之间有一个关键的区别:

举个例子来说明这两者的区别:

  1. bit << 1

    • 这是一个左移表达式,它将变量 bit 的二进制表示向左移动1位。
    • 这个表达式本身不会改变 bit 的值;它只是计算移动后的结果。
    • 如果你想要使用这个结果,你需要将它赋值给某个变量,例如:
       
      int result = bit << 1;
  2. bit <<= 1

    • 这是一个复合赋值运算符,它将左移操作和赋值操作结合在一起。
    • 这个表达式不仅将 bit 的值向左移动1位,还将移动后的结果赋值回 bit 本身。
    • 因此,bit 的值会被更新为左移后的新值。
#include <stdio.h>
 
int main() {
    int bit = 2; // 二进制表示为 0000 0010
 
    // 使用左移表达式,但不更新 bit 的值
    int temp = bit << 1; // temp 现在是 4(二进制表示为 0000 0100)
    printf("temp = %d\n", temp); // 输出 temp = 4
    printf("bit = %d\n", bit);   // 输出 bit = 2,因为 bit 没有被改变
 
    // 使用复合赋值运算符,更新 bit 的值
    bit <<= 1; // bit 现在是 4(二进制表示为 0000 0100)
    printf("bit after <<= = %d\n", bit); // 输出 bit after <<= = 4
 
    return 0;
}

在这个例子中,你可以看到 bit << 1 只是计算了一个新值并将其存储在 temp 中,而 bit 的值保持不变。相反,bit <<= 1 直接更新了 bit 的值。

总结来说,bit << 1 是一个左移表达式,用于计算左移后的结果但不改变原变量的值,而 bit <<= 1 是一个复合赋值运算符,它计算左移后的结果并将该结果赋值回原变量。


http://www.kler.cn/a/467039.html

相关文章:

  • Android12 App窗口创建流程
  • 深入解析 Linux 设备树中的引脚控制(pinctrl)二
  • 数据分享:空气质量数据--哈尔滨
  • 鸿蒙应用开发(2)
  • 基于动力学的MPC控制器设计盲点解析
  • SQL把字符串按逗号分割成记录
  • Ungoogled Chromium127 编译指南 MacOS 篇(一)- 项目介绍
  • 【Leetcode 热题 100】74. 搜索二维矩阵
  • 【2025最新计算机毕业设计】基于Spring Boot+Vue影院购票系统(高质量源码,提供文档,免费部署到本地)
  • Python 开发框架搭建简单博客系统:代码实践与应用
  • Edge安装问题,安装后出现:Could not find Edge installation
  • 30分钟学会css
  • 电商Google广告:2025年提升转化率的5种策略
  • 八字算命网站搭建方法:从零开始用php搭建一个命理网
  • 才气小波与第一性原理
  • [gcc]常见编译开关
  • 使用GitLab+Jenkins搭建CICD执行环境
  • 滴滴工作流引擎Turbo与logicFlow研究
  • 嵌入式ARM平台 openwrt系统下 基于FFmpeg 的视频采集及推流 实践
  • TypeScript 快速入门指南
  • Java.函数-acwing
  • docker容器间基于Link单向通信
  • 搭建macOS虚拟机环境
  • 【C++】你了解异常的用法吗?
  • ASA第六天笔记
  • 怎样认识camera-ISP