我的代码:
#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])时,每件事情都可以。
答案 0 :(得分:4)
您需要浮点说明符%f
,因为A2N
中三元表达式的结果类型是double
:
“其他”部分使用-1e10
,double
。
答案 1 :(得分:0)
>=65
的字符值uppercase characters
和>=97
的{{1}}。
因此,每次评估其他部分时都会返回lowercase
,因此请使用double
。