我是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);
}
}
答案 0 :(得分:2)
二进制&
运算符是按位AND运算符。它仅针对整数类型定义。
所有按位运算符都是如此。
答案 1 :(得分:0)
C语言使得只有特定数据类型才支持特定功能 例如,在c ++中你可以添加(+)两个int变量(原始数据类型),但是你不能添加两个辅助数据类型(用户已经创建) 你必须为那个辅助数据类型定义+。 编译器以这种方式只提供那些使编程很快的功能