我的代码:

#define A2N(a) (a>47 && a<58)?(a-48):(-1e10)
...
char *c ;
printf("Interval = %s,%d,%d \n",c,c[1],A2N(c[1]));

输出:
Interval = P00000T00:00:00                 ,48,1127219200

为什么?!

当我使用%f打印A2N(c [1])时,一切正常。

最佳答案

您需要float说明符%f,因为A2N中三元表达式的结果类型是double:

“其他”部分使用-1e10double

关于c++ - 为什么我看到这个大数字而不是零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21810701/

10-11 18:21