C语言中,一个整型对一个浮点型取余是怎样运算的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中,一个整型对一个浮点型取余是怎样运算的?相关的知识,希望对你有一定的参考价值。

例如:
7%1/2
还有,
%和/是同优先级的,那么7%1/2是如何运算的呢?
谢谢各位前辈! 先谢谢你们的回答,那么
7%2/4呢?
是怎样运算的?

由于C中提供的取模(%)是用来求两个整数相除的余数,所以不存在一个整数使用%对浮点数取余数,系统编译不过。要计算一个整数对浮点数取余数,可以使用fmod函数,代码如下,

#include <stdio.h>
#include <math.h>
//输出4对0.3取余的结果
int main(int argc, char *argv[])

printf("%d\n",7%1/2);//由于%和/优先级相同,从左向右执行,7%1为0,0/2为0
printf("%lf\n",fmod(4,0.3));//输出0.100000
return 0;


double fmod( double x, double y );函数返回参数x/y的余数,需要添加math.h头文件。
参考技术A 你举的例子不是整型对浮点做%.

7%1/2等价于 (7%1)/2 = 0/2 = 0;

如果是想问 7%0.5,那是编译错误,%操作符不能用于浮点数
参考技术B 不是,如果均为整型那所得结果也为整型,即使不能整除只取整数部份。如果除数或被除数中有一个为浮点型或DOUBLE型结果就会是精度更高的那类 参考技术C 首先说说明下,取余运算是能是2个整数来运算。在表达式中同优先级的运算符是从左往右依次运算的,就像你这个7%1/2最终是等于0,7%2/4刚等于0本回答被提问者采纳 参考技术D 不是对浮点型取余,7%1/2是先执行7%1然后执行0/2

整型除以浮点型是啥型?

C语言里面

浮点型精度高于整形,因此整形数先自动被转换成浮点型,再进行除法运算,最终结果也为浮点型 参考技术A 如果定义两个整型,比如a、b,分别存入数值20、6,再用保留小数位数的代码保留3位,如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main()

int a=20,b=6;
cout<<fixed<<setprecision(3)<<a/b;
return 0;

输出结果:
3

不会出现小数,说明两个整型相除得整型;
如果把a定义成整型,把b定义成浮点型,再用保留小数位数的代码保留3位,如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main()

int a=20;
double b=6;
cout<<fixed<<setprecision(3)<<a/b;
return 0;

输出结果:
3.333
说明一个整型除以一个浮点型得浮点型
参考技术B 算出来的结果是浮点型
但是最终结果
要看左值
左值是什么类型 得出结果就是什么类型
参考技术C 正常朝下兼容,整形可以完整转化成 浮点型,而浮点转成整形需要四舍五入。 参考技术D 其实啊是看你的最终变量,他是什么类型,最后结果就是什么类型。
比如a=b/c;a就是最终的本回答被提问者采纳

以上是关于C语言中,一个整型对一个浮点型取余是怎样运算的?的主要内容,如果未能解决你的问题,请参考以下文章

C/C++如何对浮点数取余?(如果需要的话)

c语言中将一个浮点型赋值给整型时,会不会四舍五入?

C语言的浮点型怎么转换为整型?

C语言浮点型数据能不能取余?

STM32 M0和M3内核单片机做浮点除法运算和整型除法运算,分别的用时。希望能给大概数据参考。

C语言字符串类型转换为整型或浮点怎么做