我的代碼:爲什麼我看到這個大數字而不是零?
#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])時,每件事情都可以。
我的代碼:爲什麼我看到這個大數字而不是零?
#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])時,每件事情都可以。
您需要的浮動符%f
,因爲在A2N
三元表達式的結果類型爲double
:
的「其他」部分使用-1e10
,一個double
。
沒有'f'後綴,我相信'-1e10'是一個'double',因此需要格式說明符'%lf'。 – timrau
但在這種情況下,其他部分不會執行! –
@ AliSepehri.Kh:沒關係。一個表達式只能有一個類型。編譯器會選擇「更寬」的類型。 –
對於uppercase characters
和>=97
對於lowercase
,字符的值是>=65
。
所以,每一個其他部分將被評估,其返回double
,所以使用%lf
。
什麼是'c [1]'? – Maroun
什麼是c [1],你應該問這些事情。我們不能簡單地猜測並給出一些隨機原因。 – Shravan40
我們需要完整但最少的代碼。目前的一個不符合任何標準。 –