C_study-第10天

本文详细介绍了C语言中的基本数据类型、操作符,如整数除法、取模、位操作(按位与、或、异或、取反)、移位操作以及sizeof操作。通过代码示例展示了这些概念的实际运用,强调了理解和正确使用操作符在编程中的重要性。
摘要由CSDN通过智能技术生成

日期: 星期二, 2024年3月23日

时间: 下午10:9

  • 数据类型和变量: C语言提供了多种基本数据类型,包括intfloatdoublechar等,用于声明不同类型的变量以存储整数、浮点数、双精度数和字符。

  • 操作符: C语言中有多种操作符,包括算术操作符(如+-*/%)、关系操作符(如==!=<>)、逻辑操作符(如&&||!)、位操作符(如&|^~)、赋值操作符(如=)和大小操作符(sizeof)。

详细解释
  • 整数除法和取模: 当两个整数进行除法操作时,结果将是整数,小数部分被舍弃。取模操作(%)返回两个数相除的余数,其符号与被除数相同。

  • 位操作:

    • 按位与&: 只有当两个相应的位都为1时,结果位才为1,否则为0。常用于清零特定位。
    • 按位或|: 只要两个相应的位中有一个为1时,结果位就为1。常用于设置特定位。
    • 按位异或^: 当两个相应的位相异时,结果位为1;相同则为0。常用于翻转特定位。
    • 按位取反~: 对二进制表示进行取反,即将1变为0,将0变为1。常用于生成特定的位模式。
  • 移位操作:

    • 左移<<: 将一个数的位向左移动指定的次数,每

      次移动相当于乘以2。右侧空出的位用0填充。

    • 右移>>: 将一个数的位向右移动指定的次数。对于无符号数,左侧空出的位用0填充;对于有符号数,大多数编译器进行算术右移,即左侧用符号位填充,这意味着正数左侧填充0,负数左侧填充1。

    • 赋值与比较: =是赋值操作符,用于将右侧表达式的值赋给左侧的变量。==是比较操作符,用于判断两个表达式的值是否相等。

    • sizeof操作符: sizeof用于计算其操作数的存储大小,单位是字节(Byte)。它可以应用于数据类型、变量、数组等。值得注意的是,sizeof是在编译时计算的,因此它的操作数不会实际执行。

代码示例
#include <stdio.h>

int main() {
    // 整数除法示例
    int divResult = 3 / 2;
    printf("3 / 2 = %d\n", divResult); // 输出: 3 / 2 = 1

    // 取模操作示例
    int modResult = 7 % 3;
    printf("7 %% 3 = %d\n", modResult); // 输出: 7 % 3 = 1

    // 位操作示例
    int a = 3; // 二进制表示: 011
    int b = 5; // 二进制表示: 101
    printf("a & b = %d\n", a & b); // 按位与: 001
    printf("a | b = %d\n", a | b); // 按位或: 111
    printf("a ^ b = %d\n", a ^ b); // 按位异或: 110

    // 移位操作示例
    int leftShift = 1 << 2; // 1左移2位,等同于1 * 2^2
    printf("1 << 2 = %d\n", leftShift); // 输出: 4
    int rightShift = -8 >> 2; // -8右移2位,保留符号位
    printf("-8 >> 2 = %d\n", rightShift); // 输出: -2 或其他,取决于编译器

    // sizeof操作符示例
    printf("Size of int: %lu bytes\n", sizeof(int)); // 输出: Size of int: 4 bytes(假设在当前平台上)

    // 按位取反示例
    int c = ~a;
    printf("~a = %d\n", c); // 对a的每一位进行取反

    return 0;
}

结论

在编写C程序时,理解和正确使用各种操作符至关重要。算术操作符让我们能进行基本的数学计算;位操作符使我们能够直接操作数的二进制位,这在底层编程和优化代码时非常有用;移位操作符提供了一种高效的方法来进行乘除以2的幂的运算;sizeof操作符则让我们能够获取数据类型或变量在内存中的大小,这在处理数组、结构体和其他复合类型时尤为重要。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小毓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值