使用C#后,我惊讶地发现C++浮点数没有定义模数运算符。显然,按位运算符也没有。我决定学习更多,并去寻找一个图表,该图表为哪些基本类型定义了运算符,而哪些没有,但是我找不到那种性质的东西。
我知道所有运算符是什么,以及如何使它们重载:
http://en.wikipedia.org/wiki/C%2B%2B_operators
但是,我不知道为每种基本类型定义了哪些运算符。
最佳答案
所有运算符均针对整数类型(char
,short
,int
,long
,long long
和enum
)定义。对于浮点类型(float
,double
和long double
),您没有%
,也没有“按位”运算符:<<
,>>
,~
,&
,|
和^
,因为它们对浮点的意义不大。例如,您对3.3 ^ 6.8
有什么期望? [1]或1.9 % 13.4
? [1]浮点除法中没有“余数”,因此很难设想它实际应该提供的内容。
如评论中所述,fmod
与%
做类似的事情。
[1]这些是修辞性的问题,我不希望有人提出一个好的答案。