2010-11-15 67 views
-1

我有一個字符指針,我想顯示一個整數值。然後是正確的以下聲明:如何執行類型轉換?

printf("%d",*(int *)ptr); 

你可以解釋我一下嗎?

+0

什麼是整數值?第一個角色?它包含作爲一個字符串? – 2010-11-15 03:25:31

+2

這個整數值從哪裏來?該字符串是否應該包含一個整數,即字符串「12」?或者你想要字符串的ASCII值?或者是什麼? – 2010-11-15 03:25:44

+0

你有沒有探索過api atoi()。它將字符串直接轉換爲整數 – Alam 2010-11-15 03:34:39

回答

2

如果字符指針(字符串)指向存儲字符串格式的數字的有效C字符串,如"123",則只需使用%s格式說明符即可。

printf("%s", ptr);

%d格式說明用於打印存儲爲int類型的二進制符號的整數數字。

0

不,這通常是錯誤的,因爲char只有1個字節,而int通常是4個字節。您訪問的其餘字節可能無效,具體取決於它指向的內容,這可能是未定義的行爲。做正確的方法是先拿到char值,然後將其轉換爲int

(int)*ptr 

當然,在這種情況下,顯式的轉換可能沒有必要在所有,作爲字符值會隱式提升爲一個整數。

0

知道變量ptr被聲明爲什麼類型會很有幫助。

如果它被聲明爲int * ptr;那麼只需要一個解引用

即。 printf(「%d」,* ptr);

因爲PTR的類型是int *的和* PTR因此的int型,其中%d匹配

然而,我猜測的ptr被宣佈無效* PTR;在你的例子中,如果你知道它實際上指向一個int,那麼 ,那麼在通用指針 類型轉換爲int *之前是正確的,然後解除引用。

即。 printf(「%d」,*(int *)ptr);