为什么我看到这个大数而不是零?

时间:2014-02-16 11:52:15

标签: c++

我的代码:

#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])时,每件事情都可以。

2 个答案:

答案 0 :(得分:4)

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

“其他”部分使用-1e10double

答案 1 :(得分:0)

>=65的字符值uppercase characters>=97的{​​{1}}。 因此,每次评估其他部分时都会返回lowercase,因此请使用double

请参阅wikipedia - ASCII