为什么对float的char值赋值不起作用

pra*_*pta 3 c

注意:这个问题非常简单,但是当我在谷歌搜索时,我没有得到任何明确的澄清.

我有以下计划

int main()
{
 float c;
 scanf("%f",&c);
 printf("%f",c);
}
Run Code Online (Sandbox Code Playgroud)

o/p当我给出一个int值(e,g - 9)时,它显示为9.000000

但是当我给出像'a'这样的char值时,它没有显示并显示0.000000.I我知道memory representation of float它完全不同int但是当我给int value (9)它时它是如何显示但是当我给出时char (a)它也是一个int(97)是没有显示.

它是如何发生的.char分配期间的内存表示是什么.

Jon*_*art 10

请注意,char代码中的任何位置都没有.

这是方式scanf应该的工作.如果你检查返回值scanf (就像你应该的那样!)你可能会看到它返回0,意味着没有匹配的项目.

当你给出scanf()一个"%f"格式字符串时,这意味着"我希望你尝试给我一个浮点数.当你提供像'a'这样的输入时,它不会匹配任何东西,因为'a'它不是一个有效的浮点数.

http://www.cplusplus.com/reference/cstdio/scanf/

  • @pradipta如果你想玩类型转换,那么只需为变量赋值,然后将这些变量分配给其他类型的变量.让`scanf`离开它 - 他只*将解析你告诉它解析的类型的输入.*您了解其中的区别吗?*您所看到的与数据类型转换或解释无关 - 仅*解析*. (2认同)