以下C代码的输出是什么? 数据类型int
可以采用浮点值吗?解释在这个小C程序中的比较
#include <stdio.h>
int main(){
float a = 1.1;
int b = 1.1;
if(a==b)
printf("YES");
else
printf("NO");
}
以下C代码的输出是什么? 数据类型int
可以采用浮点值吗?解释在这个小C程序中的比较
#include <stdio.h>
int main(){
float a = 1.1;
int b = 1.1;
if(a==b)
printf("YES");
else
printf("NO");
}
存储在b
的值将是1
。比较时,b
将投射到float
的值1.0f
,因此比较将产生NO。
int b = 1.1;
此截断双值1.1
到1
分配给变量b
之前。因此输出是NO
。您可以比较int
至float
。考虑下面这个例子:
float a=1.0;
int b=1;
if(a==b)
printf("YES");
else
printf("NO");
这里,a
转换为float
比较之前,因此,你会得到一个YES
输出。
当你执行它时你应该得到答案No。
这是因为当
int b=1.1;
被执行,它初始化的变量b
,然后分配1.1
是1
的int
。你可以通过输出值b
来检查。
此外,类型int
只存储整数,但float
可以存储小数。类型完全不同。
输出将是NO
这是因为int
不能正确地存储float
值。因此,存储在b
中的值将是1
,这不等于1.1
。因此,if
情况永远不会被满足,因此输出将永远是NO。
它会编译没有任何错误。程序的输出将是“否”。
在C中,int
和float
是2种不同的数据类型。即使您尝试将值1.1赋值给C中的整数变量,它也只会被初始化为1。
其他人已经告诉过你答案是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.
否......'int'不能带'float',所以有一个不同的数据类型'float ' – Gopi
Int只能存储整数(..., - 2,-1,0,1,2,3,...)。如果你将一个float分配给一个int,那么这个时间段后面的所有内容都将被截断并丢失。 '2.9 = 2'和'-2.9 = -2' – Flikk