1. C語言中資料型態的重要性
在C語言中,資料型態會大幅影響程式的正確性與效能。char
型別與int
型別是程式中最常用的基本資料型態,兩者經常需要互相轉換。本文將說明char
型與int
型之間的轉換方法及注意事項。
轉換的常見用途
在程式設計中,char
與int
型態的互轉主要用於處理字元與對應數值,或節省記憶體空間。例如,將char
型態的ASCII碼轉成int
,再進行相關計算。也有許多場景需將char
的輸入值當作數值處理,此時必須進行型態轉換。
2. char型轉int型
在C語言中,將char
型轉換成int
型通常透過型態轉換(cast)實現。這樣可將char
的值當成整數來操作。
基本轉換方法
將char
轉為int
時,只需進行簡單的型態轉換即可。
#include <stdio.h>
int main() {
char character = 'A'; // 'A' 的ASCII碼是65
int intValue = (int)character; // char轉int
printf("字元 %c 的ASCII碼為 %d。\n", character, intValue);
return 0;
}
這段程式碼將字元'A'
轉成整數,結果會輸出65
。
有號與無號char型
C語言中,char型有分為有號(signed char)和無號(unsigned char)兩種。有號char可表示負值,無號char範圍是0到255。將char轉換成int時,需留意這些差異。以下為有號與無號char轉換的例子:
#include <stdio.h>
int main() {
unsigned char uChar = 200; // 無號char型
int intValue = (int)uChar;
printf("無號char的值 %u 轉換成int是 %d。\n", uChar, intValue);
return 0;
}
此程式將無號char
值200轉成int
後,顯示為200。有號char若超出範圍,轉換時結果會不同,請視情況妥善處理。

3. int型轉char型
將int
型轉為char
型時,會將較大的int值強制轉換為較小範圍的char。但若int值超出char可表示的範圍,則可能發生資料遺失,需特別注意。
轉換方法與注意事項
將int
型值轉為char
型時,若超出範圍,可能會出現意外的結果。
#include <stdio.h>
int main() {
int number = 300; // 超出char範圍
char character = (char)number; // 會有資料遺失
printf("整數 %d 轉成char型後是字元 '%c'。\n", number, character);
return 0;
}
本例中,300
轉為char
時會發生資料遺失,顯示出的字元可能非預期。使用時需特別注意char的範圍。
4. 從字串轉換成數值
在C語言中,將字串轉成數值是常見需求。例如,將使用者輸入的資料轉為整數再使用,常用的函式有atoi
和strtol
。
用atoi函式轉換
使用atoi
可以簡單將字串轉成整數,但錯誤處理較有限。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234";
int number = atoi(str); // 字串轉int
printf("字串 %s 轉換成整數為 %d。\n", str, number);
return 0;
}
此程式將"1234"
這個字串轉換為整數1234
並輸出。發生錯誤時,atoi無法檢查。
用strtol安全轉換
strtol
可進行錯誤檢查,是更安全的字串轉數值方法。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[] = "1234";
char *endptr;
long int number = strtol(str, &endptr, 10); // 安全字串轉int
if (*endptr != '\0') {
printf("轉換失敗。\n");
} else {
printf("字串 %s 轉換成整數為 %ld。\n", str, number);
}
return 0;
}
這段程式碼會檢查是否轉換成功,能夠更安全地處理數值。
5. char型與int型的應用範例
最後介紹char
型與int
型結合的實際應用範例。
char型與int型混合運算
以下程式碼示範char
型和int
型混合計算,透過字元與數值產生新字元。
#include <stdio.h>
int main() {
char ch = 'a';
int num = 3;
char result = ch + num; // 'a'的ASCII值加3
printf("字元 %c 加 %d 得到字元 '%c'。\n", ch, num, result);
return 0;
}
本例中,將'a'
的ASCII碼加3,得到'd'
。展現char與int型混合操作的靈活性。