谁能解释一下输出

标签 c floating-point double output undefined-behavior

如果我尝试将 float 打印为 int,则以下代码:

main () {                         
    float a = 6.8f;                      
    printf("%d", a);                      
}                       

打印 1073741824,而此代码:

main () {            
    float a = 9.5f;           
    printf("%d", a);            
}                   

打印 0。

输出未定义吗?另外,%f 何时与整数一起使用,而 %d 何时与 double 一起使用?

最佳答案

不仅是输出,而且整个程序都有未定义的行为,因为传递给 printf() 的值的类型与格式字符串期望的类型不匹配。

关于谁能解释一下输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732292/

相关文章:

C子串两个相等字符不匹配

c++ - 使用 MPFR 计算不同精度的次正规数

c++ - 十六进制浮点字面量

c++ - float 和 double (C++) 的实际最小/最大值是多少

c - while(i=20) 或 C 程序中任何数字的结果是什么?

c - Eclipses - C 语言 - 调试 - 有什么方法可以查看指针指向的值?

java - 使用 double 最多两位小数

java - 可以将 float(或 double)设置为 NaN 吗?

c - _mm256_store_ps() 函数是原子的吗?与 openmp 一起使用时

java - 计算 Java Double 的最大值 (5)?