C语言中有哪些运算

来源:网站建设作者:新井头衔:网络博主
导读:本期聚焦于小伙伴创作的《C语言中有哪些运算》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C语言中有哪些运算》有用,将其分享出去将是对创作者最好的鼓励。

C语言中的运算是通过运算符连接操作数来实现特定计算或逻辑判断的操作,按照功能可以分为多个不同的类别,不同类别的运算适用场景和规则存在明显差异。

C语言中有哪些运算

C语言运算的主要分类

1. 算术运算

算术运算是最基础的运算类型,主要用于处理数值的计算操作,包含以下常见运算符:

  • +:加法运算符,用于计算两个操作数的和
  • -:减法运算符,用于计算两个操作数的差
  • *:乘法运算符,用于计算两个操作数的乘积
  • /:除法运算符,用于计算两个操作数的商,整数相除结果会截断小数部分
  • %:取模运算符,用于计算两个整数相除的余数,仅支持整数操作数
  • ++:自增运算符,使操作数的值加1,分为前置和后置两种形式
  • --:自减运算符,使操作数的值减1,同样分为前置和后置两种形式

以下是算术运算的代码示例:

#include <stdio.h>

int main() {
    int a = 10, b = 3;
    // 基本算术运算
    printf("a + b = %dn", a + b);  // 输出13
    printf("a - b = %dn", a - b);  // 输出7
    printf("a * b = %dn", a * b);  // 输出30
    printf("a / b = %dn", a / b);  // 输出3,整数相除截断小数
    printf("a %% b = %dn", a % b); // 输出1,取模运算

    // 自增自减运算
    int c = 5;
    printf("后置自增:c++ = %d, 之后c = %dn", c++, c); // 输出5,6
    int d = 5;
    printf("前置自增:++d = %d, 之后d = %dn", ++d, d); // 输出6,6
    return 0;
}

2. 关系运算

关系运算用于比较两个操作数的大小或相等关系,运算结果只有真(1)和假(0)两种情况,包含以下运算符:

  • >:大于运算符,判断左操作数是否大于右操作数
  • <:小于运算符,判断左操作数是否小于右操作数
  • >=:大于等于运算符,判断左操作数是否大于等于右操作数
  • <=:小于等于运算符,判断左操作数是否小于等于右操作数
  • ==:等于运算符,判断两个操作数是否相等
  • !=:不等于运算符,判断两个操作数是否不相等

关系运算的代码示例:

#include <stdio.h>

int main() {
    int x = 8, y = 10;
    printf("x > y 结果:%dn", x > y);   // 输出0,假
    printf("x < y 结果:%dn", x < y);   // 输出1,真
    printf("x == y 结果:%dn", x == y); // 输出0,假
    printf("x != y 结果:%dn", x != y); // 输出1,真
    return 0;
}

3. 逻辑运算

逻辑运算用于组合多个关系判断,实现复杂的逻辑条件判断,包含以下运算符:

  • &&:逻辑与运算符,左右两个条件都为真时结果才为真
  • ||:逻辑或运算符,左右两个条件有一个为真时结果就为真
  • !:逻辑非运算符,对条件结果取反,真变假,假变真

逻辑运算存在短路特性,逻辑与运算中如果左操作数为假,就不会执行右操作数的判断;逻辑或运算中如果左操作数为真,就不会执行右操作数的判断。

逻辑运算的代码示例:

#include <stdio.h>

int main() {
    int score = 85;
    // 判断分数是否在60到100之间
    if (score >= 60 && score <= 100) {
        printf("成绩合格n");
    }
    // 判断分数是否小于60或大于100
    if (score < 60 || score > 100) {
        printf("成绩不合格或输入错误n");
    }
    // 逻辑非运算
    int flag = 0;
    printf("flag的非运算结果:%dn", !flag); // 输出1
    return 0;
}

4. 位运算

位运算是直接对整数的二进制位进行操作的运算,仅适用于整数类型的操作数,包含以下运算符:

  • &:按位与运算符,两个二进制位都为1时结果位才为1
  • |:按位或运算符,两个二进制位有一个为1时结果位就为1
  • ^:按位异或运算符,两个二进制位不同时结果位为1,相同时为0
  • ~:按位取反运算符,将操作数的每个二进制位0变1,1变0
  • <<:左移运算符,将操作数的二进制位向左移动指定位数,右边补0
  • >>:右移运算符,将操作数的二进制位向右移动指定位数,左边补符号位

位运算的代码示例:

#include <stdio.h>

int main() {
    int m = 6;  // 二进制110
    int n = 3;  // 二进制011
    printf("m & n = %dn", m & n);  // 按位与,结果2(二进制010)
    printf("m | n = %dn", m | n);  // 按位或,结果7(二进制111)
    printf("m ^ n = %dn", m ^ n);  // 按位异或,结果5(二进制101)
    printf("~m = %dn", ~m);        // 按位取反,结果-7(补码表示)
    printf("m << 1 = %dn", m << 1); // 左移1位,结果12(二进制1100)
    printf("m >> 1 = %dn", m >> 1); // 右移1位,结果3(二进制011)
    return 0;
}

5. 赋值运算

赋值运算用于给变量赋值,除了基本的赋值运算符=之外,还有复合赋值运算符,将算术运算或位运算和赋值操作结合,包含+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=等。

赋值运算的代码示例:

#include <stdio.h>

int main() {
    int num = 10;
    num += 5;  // 等价于num = num + 5,结果15
    printf("num += 5 后:%dn", num);
    num *= 2;  // 等价于num = num * 2,结果30
    printf("num *= 2 后:%dn", num);
    num >>= 1; // 等价于num = num >> 1,结果15
    printf("num >>= 1 后:%dn", num);
    return 0;
}

6. 其他特殊运算

C语言还有一些特殊用途的运算:

  • sizeof:求字节数运算符,用于计算变量或数据类型占用的内存字节数
  • ?::条件运算符,是C语言中唯一的三目运算符,语法为条件 ? 表达式1 : 表达式2,条件为真返回表达式1的值,否则返回表达式2的值
  • ,:逗号运算符,用于将多个表达式连接成一个表达式,整个逗号表达式的值是最后一个表达式的值
  • &*:取地址运算符和指针解引用运算符,用于指针相关操作

特殊运算的代码示例:

#include <stdio.h>

int main() {
    int val = 20;
    // sizeof运算
    printf("int类型占用字节数:%dn", sizeof(int));
    printf("val变量占用字节数:%dn", sizeof(val));
    // 条件运算
    int max = (val > 10) ? val : 10;
    printf("max的值:%dn", max);
    // 逗号运算
    int res = (val += 5, val * 2);
    printf("逗号运算结果:%dn", res); // 输出50
    // 取地址和解引用运算
    int *p = &val;
    printf("val的地址:%p, 值:%dn", p, *p);
    return 0;
}

运算优先级和结合性

C语言中不同运算符的运算优先级不同,优先级高的运算符先执行,优先级相同的时候按照结合性决定执行顺序。比如算术运算符的优先级高于关系运算符,关系运算符的优先级高于逻辑运算符。如果不确定优先级,可以使用圆括号()来提升某个运算的执行优先级,圆括号内的运算会先执行。

以下是优先级相关的示例:

#include <stdio.h>

int main() {
    int result1 = 3 + 4 * 5;  // 先算乘法,结果23
    int result2 = (3 + 4) * 5; // 先算括号内的加法,结果35
    printf("result1 = %d, result2 = %dn", result1, result2);
    return 0;
}

C语言运算符算术运算位运算逻辑运算修改时间:2026-07-06 23:36:39

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。