Gan*_*esh 0 c floating-point int printf
我知道整数算术将截断分数,但在这里至少应打印5。为什么要打印0.000000?
的调用printf具有未定义的行为,因为转换说明符%f与表达式的类型不对应10 / 2,即int。由于表达式的两个操作数10 / 2具有类型int,因此结果也具有类型,int因为它是两个操作数的公共类型。
至少使用代替10.0 / 2。在这种情况下,表达式的类型为double。
或输出的整数表达式10 /2使用转换符%d或%i类似
printf( "value: %d", 10 / 2 );
Run Code Online (Sandbox Code Playgroud)
根据C标准(7.21.6.1 fprintf函数)
9如果转换规范无效,则行为未定义。275)如果任何参数不是对应转换规范的正确类型,则行为未定义。