2013-02-26 37 views
0

我有一堆不同的數據類型,我想通過燒焦的,但是當我做平常格式傳遞整數:將不同的數據類型轉換爲char?在C

char number=(char)one; 

它僅適用於整數。有了其他數據類型,當我想要字符串表示時,它給了我數字值。什麼是最簡單的方法來做到這一點? P.S.請徹底解釋答案,因爲當我試圖用這種方式施放時,我也有指針大小問題。只有c語法請 謝謝

+1

請列舉一些例子。 'char'是一個整數數據類型,所以我想我不確定你想要什麼? – adamdunson 2013-02-26 03:06:25

+0

'char'是一個字符,它(正如adamdunson所說)是一個整數。這不是一個字符串,所以我不確定你的意思是「字符串表示」。 – melpomene 2013-02-26 03:09:08

+1

你想要做的不是「投射」,你想要格式化。 – 2013-02-26 03:11:12

回答

3

如果你正在尋找數據類型的字符串表示,我想你想要的是sprintf函數。例如,對於浮點類型,你會怎麼做:

float example = 3.6; 
char temp[64]; // Allocate a string of size 64. 
sprintf(temp, "%f", example); 

這將存儲在臨時的example字符串表示。

+0

有沒有打印它呢? – 2013-02-26 03:11:23

+1

還有其他方法,但不想使用它們,至少不適用於浮點類型。如果你擔心這個問題,'sprintf()'不會在屏幕或打印機上打印任何東西。 – 2013-02-26 03:20:47

+0

它仍然返回數字值,即使我把它和什麼數據類型像uid_t或結構utsname – 2013-02-26 03:45:54

1

char是整數類型,這意味着它可以被轉化爲與從整數(小於256)。

對於其他數據類型,當我需要 字符串表示形式時,它給了我數字值。

從技術上講,字符串不是char。這是一個數組,因此最終會衰減爲指針。

對於每一個類型的,你必須創建自己的toString()排序功能(S),並返回相應格式的字符串。

最簡單的方法:用sprintf()

0

讓我們在這一條線,一個字的時間,以獲得正確的概念。

char number=(char)one; 
  • 第一char是聲明,這意味着我創建char類型的變量。 char是1字節(8位)的數據類型,它通常用來裝單個字符,但從根本上它是一個字節;因此它可以保持從0x00(又名a 0)到0xFF(又名a 255)的值。

  • number是類型的變量的名稱char

  • =是賦值運算符;你要設置的值爲number

  • (char)意思是「無論什麼類型的變量在我身後,將其解釋爲char」。這被稱爲「鑄造到char」。 (不是「傳給char」)。

  • 從你的代碼,我不能告訴one是。但是,如果除char之外的任何內容或0到255之間的整數,分配都沒有意義。

總結是number只是一個字符,這將舉行一個字節的值,如果你指定別的事情,你可能會得到意想不到的結果。

+0

好的感謝解釋上述代碼只是一個例子。一個只是假設是任何int變量。這只是假設顯示如何試圖施放。謝謝你 – 2013-02-26 03:24:33

0

也許你是這樣的事情後:

char number = '0' + one; 

這將爲一個工作= [0,9]

相關問題