当前位置: 首页 > 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.lryc.cn/news/615810.html

相关文章:

  • 企业级WEB应用服务器TOMCAT — WEB技术详细部署
  • 使用Blender可视化多传感器坐标系转换
  • 从onnx模型到om模型的全自动化转化
  • 2025年APP开发趋势:4大方向重构行业格局
  • 【lucene】BlockDocsEnum 跟BlockImpactsDocsEnum 的区别
  • LeetCode 869.重新排序得到 2 的幂:哈希表+排序(一次初始化)
  • Java设计模式之开闭原则介绍与说明
  • 深入解析Go设计模式:命令模式实战
  • 分布微服务电商订单系统Rust编码开发[上]
  • Rust进阶-part6-宏
  • [激光原理与应用-224]:机械 - 机械设计与加工 - 常见的术语以及含义
  • 每日算法刷题Day60:8.10:leetcode 队列5道题,用时2h
  • 机器学习-增加样本、精确率与召回率
  • Modbus RTU转Profinet网关接在线循环Na离子实现PLC读取温度值
  • C# 中常用集合以及使用场景
  • 本地WSL部署接入 whisper + ollama qwen3:14b 总结字幕增加利用 Whisper 分段信息,全新 Prompt功能
  • Framework开发之Zygote进程2(基于开源的AOSP15)--init.rc在start zygote之后的事情(详细完整版逐行代码走读)
  • 《解锁 C++ 基础密码:输入输出、缺省参数,函数重载与引用的精髓》
  • 【Linux | 网络】数据链路层
  • 九、Linux Shell脚本:运算符与表达式
  • 开启单片机
  • 服务器硬件电路设计之 I2C 问答(三):I2C 总线上可以接多少个设备?如何保证数据的准确性?
  • 笔试——Day34
  • 亚麻云之全球加速器——CloudFront(CDN)服务入门
  • 【Docker实战】Spring Boot应用容器化
  • ShadowKV 机制深度解析:高吞吐长上下文 LLM 推理的 KV 缓存“影子”方案
  • Python爬虫-爬取政务网站的文档正文内容和附件数据
  • 【后端】Java 8 特性 `User::getId` 语法(方法引用)介绍
  • 【东枫科技】NTN-IOT 卫星互联网原型系统,高达1.6G大带宽
  • MPLS特性之PHP(Penultimate Hop Popping)