为什么我们不能在float和double数据类型上使用按位运算符

我是c的新手,在这里我试图以存储在内存中的方式打印存储在float和double变量中的值。 但编译器不允许我在float和double变量上使用按位运算符! 我想知道为什么我们不能使用像’&’和’|’这样的按位运算符 float和double数据类型的运算符,如果我们可以使用它会发生什么? 它们是替代方法还是我们可以绕过这些问题?

这是我尝试过的代码,

int main() { float valF = 10; double valD = 10; printf("\n\t%i\t%li\n",valI,sizeof(valF)); for(i = 8*sizeof(valF); i >= 0 ; i--) { printf("%i",(valF & (1<= 0 ; i--) { printf("%i",(valD & (1<<i))? 1 : 0); } } 

二进制&运算符是按位AND运算符。 它仅针对整数类型定义。

所有按位运算符都是这种情况。

C语言使得只有特定数据类型支持特定function的方式例如在c ++中你可以添加(+)两个int变量(原始数据类型)但你不能添加两个辅助数据类型(用户已经创建)U必须为该辅助数据类型定义该+。 编译器以这种方式只提供那些使编程有效的function