2016-01-27 24 views
-2

以下C代码的输出是什么? 数据类型int可以采用浮点值吗?解释在这个小C程序中的比较

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

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

否......'int'不能带'float',所以有一个不同的数据类型'float ' – Gopi

+0

Int只能存储整数(..., - 2,-1,0,1,2,3,...)。如果你将一个float分配给一个int,那么这个时间段后面的所有内容都将被截断并丢失。 '2.9 = 2'和'-2.9 = -2' – Flikk

回答

1

存储在b的值将是1。比较时,b将投射到float的值1.0f,因此比较将产生NO。

1

int b = 1.1;

此截断双值1.11分配给变量b之前。因此输出是NO。您可以比较intfloat。考虑下面这个例子:

float a=1.0; 
int b=1; 

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

这里,a转换为float比较之前,因此,你会得到一个YES输出。

1

当你执行它时你应该得到答案No。

这是因为当

int b=1.1; 

被执行,它初始化的变量b,然后分配1.11int。你可以通过输出值b来检查。

此外,类型int只存储整数,但float可以存储小数。类型完全不同。

2

输出将是NO

这是因为int不能正确地存储float值。因此,存储在b中的值将是1,这不等于1.1。因此,if情况永远不会被满足,因此输出将永远是NO。

1

它会编译没有任何错误。程序的输出将是“否”。

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

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的仍将INT!他们在本声明中表现得像浮动。 但是,在你的程序中将不起作用,因为只要你声明int b = 1.1; b就变成1.