C语言中的除法[重复]

Posted

技术标签:

【中文标题】C语言中的除法[重复]【英文标题】:Division in C language [duplicate] 【发布时间】:2021-12-11 07:45:45 【问题描述】:

大家好,希望你们一切顺利,我是 C 语言的新手,我只需要问一个基本问题,即当我在 C 中像这样除数时:

#include<stdio.h>
main()

   float a = 15/4;
   printf("%.2f", a);

除法发生,但答案以 3.00 之类的形式出现(这是不正确的,它没有计算余数) 但是当我这样编程时:

#include<stdio.h>
main()

   float a = 15;
   float b = 4;
   float res = a/b;
   printf("%.2f", res);

这个方法给了我正确的答案。所以我想问一下这两个程序的黑白差异背后的原因,为什么第一种方法不起作用,为什么第二种方法起作用?

【问题讨论】:

15/4 是整数(即截断)除法,因为两个操作数的类型都是 int。在 C 中,您得到的除法类型取决于操作数的类型。在某些编程语言中,截断除法和小数除法本身具有不同的运算符名称;在 C 中,它们共享相同的标记,编译器通过一种运算符重载来解析(尽管 C 没有用户可定义的运算符重载,但它具有 de facto 内置重载)。 两个答案都是正确的。两个整数之间的“/”符号表示整数除法。 呃,我把它选为副本,却没有看到我投的副本是给 python 的! 谢谢大家,我得到了答案! 【参考方案1】:

在这个表达式中

15/4

两个操作数都有整数类型(更准确地说是int 类型)。于是进行了整数运算。

例如,如果至少一个操作数具有浮点类型(float 或 double)

15/4.0

15/4.0f

那么结果将是一个浮点数(在double 类型的第一个表达式和float 类型的第二个表达式中)

在这个表达式中

a/b

两个操作数都有浮点类型(float 类型)。所以结果也是一个浮点数。

【讨论】:

我明白了,我明白了。谢谢! @Mac 完全没有。不客气。:)【参考方案2】:

当您将变量声明为浮动时,您会自动转换他从等式中获得的值。 例如: Float a = 2/4 这就像写 float a = float(equation)。 小心, 奥利

【讨论】:

以上是关于C语言中的除法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C语言中除法怎么取得小数?

C语言中除法怎么取得小数?

c语言是如何处理除法运算的呀?

c语言中编写程序,输入2个数,定义四个函数,分别实现加减乘除四则运算,要使用函数。计算除法时要判断

C语言中除法和取整分别怎么做

c语言中num是啥意思