1 c floating-point operators modulus
#include <stdio.h>
int main()
{
char c;
c=10;
if(c%2==0)
printf("Yes");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印"是".谁能告诉为什么模运算符适用于char和int而不是double等?
小智 7
您已经获得了解释为什么%定义的注释char:它是为所有整数类型定义的,而在C中,char是一个整数类型.其他一些语言确实定义了char不支持算术运算的不同类型,但C不是其中之一.
但要回答为什么没有为浮点类型定义:历史.没有技术原因可能无法%为浮点类型定义运算符.以下是C99基本原理所说的内容:
6.5.5乘法运算符
[...]
C89委员会拒绝将
%运营商扩展到浮动类型,因为这样的使用会复制由fmod(见§7.12.10.1)提供的设施.
正如mafso后来发现的那样:
7.12.10.1 fmod函数
[...]
C89委员会审议了将余数运算符
%用于此功能的提案; 但它被拒绝了,因为运营商通常对应硬件设施,并且fmod大多数机器上的硬件都不支持.
他们似乎有些矛盾.由于%委员会不想扩展运营商,因此运营商没有延期,因为fmod已满足了这一需求,但是fmod被选中以满足这种需求%?它们不可能同时真实.
我怀疑其中一个原因是原因,另一个原因是之后没有重新访问该决定,但没有人知道哪个是第一个.无论哪种方式,只是决定%不执行此操作.
| 归档时间: |
|
| 查看次数: |
4812 次 |
| 最近记录: |