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