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型混合操作的靈活性。


