int的变量为什么不能输出%f

1.int的变量为什么不能输出%f,求详解。

img


2.为什么不是全输出,求详解

img

楼上各位有些误导人了!!!!!

下面是最简单的printf 调用了。。。

#include <stdio.h>

int main()
{
    int a = 10;
    printf("%f\n", a);
    
    return 0;
}

不出意外printf 输出的结果为0,但是为什么为0?
说对不上也对,说%f 是针对浮点型也对,但是都没有说到重点上。。。。
主要是因为int 和float 在内存中存放的方式不一样。。。。
假设a 的内存地址为0x1230,那么0x1230 存放的是0xa 或者二级制1010,那么0x1231、0x1232、0x1233 存放的都是0。。。
ok。。。。这个时候printf 需要按照float 输出,那么按照float 的4个字节在内存中exponent 部分为0,也就是指数部分为2 的 -127 次方,那么无论0x1230 里是多少,最后的值都为0
那,怎么让int 类型的变量输出为 %f 呢?非常简单:

printf("%f\n", (float)a);

希望这个回答能帮到你。。。。如果有其它的问题,随时欢迎交流~~~~

%f属于浮点型,不属于整数。%d是十进制整数,%c是字符,但实质是ASCII码值,所以说都可以使用。
getchar()是从标准输入里读取下一个字符,所以是E。

%d : Integer (C Programming Language: int )
%f : Single-precision floating-point (C Programming Language: float )
%lf : Double-precision floating-point (C Programming Language: double )
%c : Character (C Programming Language: char )
%ld : Long Integer (C Programming Language: long long/long )
%s : String
各个标识符都是不互通的,这是C语言的本来的规则,如果混淆在一起就不能分清了。
不要妄想C语言能像Python那样“通人性”,C语言就是这么设计的。

1、%d 没有争议,%c可以用是因为编译器会认为a(97)是ascii值的97(即,字符'a'),可以输出
2、getchar() 仅接收缓冲区第一个字符,(也可以是空格 回车等