• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言加减乘除运算

C语言加减乘除运算

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2022-04-30

匿名通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
加减乘除是常见的数学运算,C语言当然支持,不过,C语言中的运算符号与数学中的略有不同,请见下表。
 加法减法乘法除法求余数(取余)数学+-×÷无C语言+-*/%C语言中的加号、减号与数学中的一样,乘号、除号不同;另外C语言还多了一个求余数的运算符,就是 %。

下面的代码演示了如何在C语言中进行加减乘除运算:
#include <stdio.h>int main(){    int a = 12;    int b = 100;    float c = 8.5;    int m = a + b;    float n = b * c;    double p = a / c;    int q = b % a;    printf("m=%d, n=%f, p=%lf, q=%d\n", m, n, p, q);    return 0;}
输出结果:
m=112, n=850.000000, p=1.411765, q=4

你也可以让数字直接参与运算:
#include <stdio.h>int main(){    int a = 12;    int b = 100;    float c = 8.9;    int m = a - b;  // 变量参与运算    int n = a + 239;  // 有变量也有数字    double p = 12.7 * 34.3;  // 数字直接参与运算    printf("m=%d, n=%d, p=%lf\n", m, n, p);    printf("m*2=%d, 6/3=%d, m*n=%ld\n", m*2, 6/3, m*n);    return 0;}
输出结果:
m=-88, n=251, p=435.610000
m*2=-176, 6/3=2, m*n=-22088

对除法的说明

C语言中的除法运算有点奇怪,不同类型的除数和被除数会导致不同类型的运算结果:
  • 当除数和被除数都是整数时,运算结果也是整数;如果不能整除,那么就直接丢掉小数部分,只保留整数部分,这跟将小数赋值给整数类型是一个道理。
  • 一旦除数和被除数中有一个是小数,那么运算结果也是小数,并且是 double 类型的小数。

请看下面的代码:
#include <stdio.h>int main(){    int a = 100;    int b = 12;    float c = 12.0;       double p = a / b;    double q = a / c;       printf("p=%lf, q=%lf\n", p, q);       return 0;}
运行结果:
p=8.000000, q=8.333333

a 和 b 都是整数,a / b 的结果也是整数,所以赋值给 p 变量的也是一个整数,这个整数就是 8。

另外需要注意的一点是除数不能为 0,因为任何一个数字除以 0 都没有意义。

然而,编译器对这个错误一般无能为力,很多情况下,编译器在编译阶段根本无法计算出除数的值,不能进行有效预测,“除数为 0”这个错误只能等到程序运行后才能发现,而程序一旦在运行阶段出现任何错误,只能有一个结果,那就是崩溃,并被操作系统终止运行。

请看下面的代码:
#include <stdio.h>int main(){    int a, b;    scanf("%d %d", &a, &b);  //从控制台读取数据并分别赋值给a和b    printf("result=%d\n", a / b);       return 0;}
这段代码用到了一个新的函数,就是 scanf。scanf 和 printf 的功能相反,printf 用来输出数据,scanf 用来读取数据。此处,scanf 会从控制台读取两个整数,并分别赋值给 a 和 b。关于 scanf 的具体用法,我们将在《C语言scanf:读取从键盘输入的数据(含输入格式汇总表)》一节中详细讲解,这里大家只要知道它的作用就可以了,不必求甚解。
程序开头定义了两个 int 类型的变量 a 和 b,程序运行后,从控制台读取用户输入的整数,并分别赋值给 a 和 b,这个时候才能知道 a 和 b 的具体值,才能知道除数 b 是不是 0。像这种情况,b 的值在程序运行期间会改变,跟用户输入的数据有关,编译器根本无法预测,所以就没法及时发现“除数为 0”这个错误。

对取余运算的说明

取余,也就是求余数,使用的运算符是 %。C语言中的取余运算只能针对整数,也就是说,% 的两边都必须是整数,不能出现小数,否则编译器会报错。

另外,余数可以是正数也可以是负数,由 % 左边的整数决定:
  • 如果 % 左边是正数,那么余数也是正数;
  • 如果 % 左边是负数,那么余数也是负数。

请看下面的例子:
#include <stdio.h>int main(){    printf(        "100%%12=%d \n100%%-12=%d \n-100%%12=%d \n-100%%-12=%d \n",        100%12, 100%-12, -100%12, -100%-12    );    return 0;}
运行结果:
100%12=4
100%-12=4
-100%12=-4
-100%-12=-4 

在 printf 中,% 是格式控制符的开头,是一个特殊的字符,不能直接输出;要想输出 %,必须在它的前面再加一个 %,这个时候 % 就变成了普通的字符,而不是用来表示格式控制符了。

加减乘除运算的简写

有时候我们希望对一个变量进行某种运算,然后再把运算结果赋值给变量本身,请看下面的例子:
#include <stdio.h>int main(){    int a = 12;    int b = 10;    printf("a=%d\n", a);    a = a + 8;    printf("a=%d\n", a);    a = a * b;    printf("a=%d\n", a);    return 0;}
输出结果:
a=12
a=20
a=200

a = a + 8相当于用原来 a 的值(也即12)加上 8,再把运算结果(也即20)赋值给 a,此时 a 的值就变成了 20。

a = a * b相当于用原来 a 的值(也即20)乘以 b 的值(也即10),再把运算结果(也即200)赋值给 a,此时 a 的值就变成了 200。

以上的操作,可以理解为对变量本身进行某种运算。

在C语言中,对变量本身进行运算可以有简写形式。假设用 # 来表示某种运算符,那么

a = a # b

可以简写为:

a #= b

# 表示 +、-、*、/、% 中的任何一种运算符。

上例中a = a + 8可以简写为a += 8,a = a * b可以简写为a *= b。

下面的简写形式也是正确的:
int a = 10, b = 20;a += 10;  //相当于 a = a + 10;a *= (b-10);  //相当于 a = a * (b-10);a -= (a+20);  //相当于 a = a - (a+20);
注意:a #= b 仅是一种简写形式,不会影响程序的执行效率。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-28c++回调之利用函数指针示例
  • 2017-05-28先序遍历二叉树的递归实现与非递归实现深入解析
  • 2017-05-28打印菱形以及斐波纳契数列的几种解法介绍
  • 2017-05-28标准CSV格式的介绍和分析以及解析算法实例详解
  • 2017-05-28Linux下用Valgrind做检查(防止内存泄露)
  • 2017-05-28深入理解数组指针与指针数组的区别
  • 2017-05-28C++实现获取IP、子网掩码、网关、DNS等本机网络参数的方法
  • 2017-05-28C语言double和float 实例分析
  • 2017-05-28浅析C语言编程中的数组越界问题
  • 2022-04-30通俗地理解什么是编程语言

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c++ 中__declspec 的用法详解
    • c++统计文件中字符个数代码汇总
    • 浅析成员函数和常成员函数的调用
    • C++ 如何用cout输出hex,oct,dec的解决方法
    • C++中栈结构建立与操作详细解析
    • c++实现的常见缓存算法和LRU
    • 简介C++编程中的运算符重载
    • 利用C语言实践OOP,以及new,delete的深入分析
    • 深入理解堆排序及其分析
    • 深入理解Java事务的原理与应用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有