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

算术运算符指南

目录

一、算术运算符概述

二、加法(+)和减法(-)运算符

三、乘法(*)运算符

四、除法(/)运算符

整数除法

浮点数除法

常见陷阱示例

五、取模(%)运算符

基本用法

负数取模规则

六、重要注意事项


一、算术运算符概述

C语言提供了一组基本的算术运算符用于数学计算,包括:

  • + 加法

  • - 减法

  • * 乘法

  • / 除法

  • % 取模(求余)

        这些运算符都是双目运算符,需要两个操作数。注意:操作符(operator)和运算符(operator)是同义词,只是翻译不同。


二、加法(+)和减法(-)运算符

#include <stdio.h>int main() 
{int x = 4 + 22;  // 加法运算int y = 61 - 23; // 减法运算printf("%d\n", x); // 输出26printf("%d\n", y); // 输出38return 0;
}


三、乘法(*)运算符

#include <stdio.h>int main() 
{int num = 5;printf("%d\n", num * num); // 输出25return 0;
}


四、除法(/)运算符

除法运算有整数除法浮点数除法两种形式:

整数除法

当两个操作数都是整数时,执行整数除法(截断除法),结果会舍弃小数部分。

#include <stdio.h>int main() 
{float x = 6 / 4;    // 实际执行的是整数除法int y = 6 / 4;      // 整数除法printf("%f\n", x);  // 输出1.000000printf("%d\n", y);  // 输出1return 0;
}

浮点数除法

至少有一个操作数是浮点数时,执行浮点数除法。

#include <stdio.h>int main() 
{float x = 6.0f / 4;  // 浮点数除法printf("%f\n", x);   // 输出1.500000return 0;
}

常见陷阱示例

#include <stdio.h>int main() 
{int score = 5;score = (score / 20) * 100;  // 结果为0,因为5/20=0// 修正方案score = (score / 20.0) * 100; // 使用浮点数除法return 0;
}

        你以为运算结果是25,但实际上score却等于0。这是因为score/20执行的是整数除法,结果会取整为0,再乘以100自然还是0。要得到预期结果,只需将除数20改为20.0,这样就会进行浮点数除法。


五、取模(%)运算符

取模运算符返回两个整数相除后的余数,只能用于整数运算

基本用法

#include <stdio.h>int main() 
{printf("%d\n", 6 % 4);  // 输出2return 0;
}

负数取模规则

取模运算结果的正负号由第一个操作数决定:

#include <stdio.h>int main() 
{printf("%d\n", 11 % -5);   // 输出1printf("%d\n", -11 % -5);  // 输出-1printf("%d\n", -11 % 5);  // 输出-1return 0;
}


六、重要注意事项

  1. 整数除法会直接截断小数部分,不会四舍五入

  2. 除数为0会导致运行时错误

  3. 取模运算只能用于整数类型

  4. 混合类型运算时会自动进行类型转换

  5. 运算符优先级:*/% > +-

http://www.dtcms.com/a/324139.html

相关文章:

  • 震动马达实现库函数版(STC8)
  • MPLS使用LSP解决路由黑洞
  • 【工具变量】地市城市创业活力数据集(1971-2024年)
  • 微信小程序中实现表单数据实时验证的方法
  • 计算机网络:如何理解目的网络不再是一个完整的分类网络
  • 线程池线程复用的原理是什么?
  • 单调栈通用思路
  • CrackMapExec--安装、使用
  • Matlab算法代码速成5:Matlab求解分段微分方程编程示例
  • Linux环境下实现简单TCP通信(c)
  • Vue 3 快速入门 第五章
  • Jetpack系列教程(二):Hilt——让依赖注入像吃蛋糕一样简单
  • ROGUE: 【张院士团队R包】一种基于熵的用于评估单细胞群体纯度的度量标准
  • 第十五讲:set和map
  • Celery分布式任务队列
  • vscode uv 发布一个python包:编辑、调试与相对路径导包
  • Rust进阶-part6-宏
  • WPFC#超市管理系统(5)商品布局、顾客登录、商品下单
  • redis集群-docker环境
  • JAVA+AI简化开发操作
  • `sk_buff` 结构体详解(包含全生命周期解析)
  • How Websites Work 网站如何运作
  • 社交与职场中的墨菲定律
  • 2025年6月电子学会全国青少年软件编程等级考试(Python三级)真题及答案
  • DBAPI 实现不同角色控制查看表的不同列
  • 量子计算机实用化:从理论到现实的艰难跨越
  • 数据中心可视化:算力中枢智能运维
  • 编程基础之字符串——统计数字字符个数
  • JDBC的连接过程(超详细)
  • 【Docker-Day 12】揭秘容器网络:深入理解 Docker Bridge 模式与端口映射