『壹』 取余不是两边只能为整形吗 求大神解答!
“取余不是两边只能为整形吗”
编译器的默认类型转换,你去好好看书了解一下。当类型不同时,编译器会在后台promote转换成统一类型再进行运算的。
『贰』 C语言中,一个整型对一个浮点型取余是怎样运算的
由于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头文件。
『叁』 C语言。取余运算符 %两边的数字类型相同就行还是必须都是整型
必须是整形。
除法运算符“/”。二元运算符,具有左结合性。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。
例如:
5/2=2,1/2=0
5/2.0=2.5
(3)取余对整形扩展阅读
求余运算符“%”,二元运算符,具有左结合性。参与运算的量均为整型。求余运算的结果等于两个数相除后的余数。
例如:
5%2=1,1%2=1
5%2.0和5.0%2的结果是语法错误
转:当前面的数小于后面的数时
其实求余运算可以看成
a%b=a-(int)(a/b)*b
1%2=1
2%5=2
a%b
如果a<b的话,这样的商为0,余数就是a。
『肆』 c语言中取余运算符两边可以不是整型吗回答详细点。。。谢谢
这要看你的编译器环境支持什么样的标准,在c语言的c99标准中,为整数除法规定了“趋零截尾”的规则。按照这个规则,如第一个操作数为负,那么得到的模也为负;如第一个操作数为正,那么结果也为正。例:3
%
2结果是1,3
%
-2
结果是1,-3
%
-2结果是-1,-3
%
2结果是-1。如果你得到不同的结果,说明你的编译器实现不完全支持c99标准。
『伍』 求余运算符 只适用于整形与字符型数据; 求余的两个操作数只适用于整形数;这两个不矛盾嘛
在计算机中,字符型数据是按照整数进行运算的(不过其表示的范围为0到255),所以求余运算可以使用整数和字符型数据。
希望能帮到你。
『陆』 【C语言,%取余两边都要是整型吗】
不可以,取余运算符只是针对整形数来说的,你学的数学里边不是整数可以取余吗?而且c语言就这样规定的。
『柒』 C语言中求余的结果是否要为整型
不一定,浮点型数也可以
『捌』 %取余的操作对象只能是整形,那10.7%3是不是不能算呀
在少部分编译器和特殊编译配置下,10.7%3会被强制转换为整数后做取余数运算,相当于:
(int)10.7%3
得到整数结果。
大部分编译器会直接报错,%不能对浮点数运算。
如果你希望得到小数结果,只能自己做一个函数或语句段来完成:
doublea=10.7,b=3;
while(a>=b)
a-=b;
『玖』 求大数对整数取余算法的原理
所谓求余不就是除法得到余数的过程,这个程序的算法其实跟我们手动除法的过程是一样的,想想我们怎么笔算的?
举个例子来说,4147 /3
最高位开始,4/3=1,还余1,然后借位给低位,下一位是1,加上高一位的借位就是1×10+1=11,
11/3=3,还余2,继续借位给下一位=4+2×10=24,24/3=8,恰好除断,最后一位就没有借位了,就是7/3=2,还余1,最后得到的余数就是4147 /3的余数
你程序中对大数求余的过程,不就是模拟我们笔算除法的过程嘛!