解释这个小C程序的比较

时间:2016-01-27 06:30:59

标签: c

以下C代码的输出是什么? int数据类型可以采用浮点值吗?

#include <stdio.h>
int main(){
  float a = 1.1;
  int b = 1.1;

  if(a==b)
     printf("YES");
  else
     printf("NO");
}

6 个答案:

答案 0 :(得分:2)

输出

这是因为int无法正确存储float值。因此,b中存储的值将为1,不等于1.1。因此,if情况永远不会得到满足,因此输出将始终为NO。

答案 1 :(得分:1)

b中存储的值为1。进行比较时,b将转换为float1.0f,因此比较将产生NO。

答案 2 :(得分:1)

  

int b = 1.1;

这会在分配给变量1.1之前将双值1截断为b。因此输出为NO

但您可以将intfloat进行比较。考虑这个例子:

float a=1.0;
int b=1;

if(a==b)
    printf("YES");
else
    printf("NO");

此处,a在比较之前转换为float,因此您将获得YES输出。

答案 3 :(得分:1)

执行时应该得到答案否。

那是因为

int b=1.1;

已执行,它初始化变量b,然后分配int 1.1 1。您可以通过输出b的值来检查此项。

类型int仅存储整数,但float可存储小数。类型完全不同。

答案 4 :(得分:1)

它将编译没有任何错误。该程序的输出将为“NO”。

在C中,intfloat是两种不同的数据类型。即使您尝试将值1.1分配给C中的整数变量,它也只会初始化为1。

答案 5 :(得分:0)

其他人已经告诉过你答案是 NO。 int数据类型可以采用浮点值吗?

是的,他们可以,但只能在一个声明中!如果你希望int变量的行为类似于float变量,你需要将它转换为float。

例如:

int x = 5;
int y = 3;
printf("%f \n", (float)x/y);

输出为5.0 / 3,这将是浮动值。 (float)x被称为投射。您还可以将浮点值转换为整数(int)some_var等。

注意: x和y的类型将保持为!它们在此语句中的行为类似于float。 但是,在您的程序中无效,因为只要您声明int b = 1.1; b变为1。