C語言中char與int的資料型態轉換與應用全攻略

1. C語言中資料型態的重要性

在C語言中,資料型態會大幅影響程式的正確性與效能。char型別與int型別是程式中最常用的基本資料型態,兩者經常需要互相轉換。本文將說明char型與int型之間的轉換方法及注意事項。

轉換的常見用途

在程式設計中,charint型態的互轉主要用於處理字元與對應數值,或節省記憶體空間。例如,將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語言中,將字串轉成數值是常見需求。例如,將使用者輸入的資料轉為整數再使用,常用的函式有atoistrtol

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