【发布时间】:2011-07-14 01:39:35
【问题描述】:
我目前在某些计算中遇到了光线追踪器“引擎”的问题。
info->eyex = -1000.0;
info->eyey = 0.0;
printf("%f et %f et %f et %f et %f\n", info->eyex, info->vx, info->eyey, info->vy, info->vz);
例如,在那段代码中,值看起来不错,但 info->eyex 给了我一个 -nan 错误。
这很奇怪,因为我之前重置了值。
【问题讨论】:
-
由于printf颠覆了类型系统,所以在问printf的问题时需要指定变量是什么类型。
-
@Unlimited:您应该发布
info类定义。 -
@Unlimited:也可能有帮助:
%f可以视为float;尝试将%lf用于double。 -
@artyom.stv:在 printf 和其他 varargs 函数中,float 会自动提升为 double。这是
scanf,%lf很重要。 -
@artyom:标准未描述
printf转换说明符"%lf"。允许编译器定义它作为扩展的作用......因此使用该特定扩展的程序在可移植性方面受到严重限制。