为什么我们不能在float& amp;双数据类型

时间:2015-10-21 05:21:44

标签: c

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

以下是我尝试使用的代码,

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<<i))? 1 : 0);
 }

 printf("\n\t%i\t%li\n",valD,sizeof(valS)); 

for(i = 8*sizeof(valD); i >= 0 ; i--)
{
 printf("%i",(valD & (1<<i))? 1 : 0); 
}

}

2 个答案:

答案 0 :(得分:2)

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

所有按位运算符都是如此。

答案 1 :(得分:0)

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