C語言兩變數型態不同如何進行運算?

假設

a變數為int16_t型態

b變數int32_t型態

將這兩變數做加減乘除,得到最終c變數型態為何呢?

會依照最大的變數型態為基準進行運算,所以以此例子看b變數型態會比a變數型態大,運算時,就會以b變數型態為基準,會將a變數型態轉換為int32_t進行運算,最終的運算結果的變數型態也會是int32_t。

以下為程式碼

#include <stdio.h>
#include <stdint.h>

int main() {
    int16_t a = 300;     // 16-bit 整數
    int32_t b = 1000;    // 32-bit 整數
    int32_t c;           // 儲存結果

    // 加法
    c = a + b;
    printf("a + b = %d\n", c);
    printf("Size of c (a + b): %zu bytes\n", sizeof(c));

    // 減法
    c = a - b;
    printf("a - b = %d\n", c);
    printf("Size of c (a - b): %zu bytes\n", sizeof(c));

    // 乘法
    c = a * b;
    printf("a * b = %d\n", c);
    printf("Size of c (a * b): %zu bytes\n", sizeof(c));

    // 除法
    if (a != 0) { // 確保分母不為 0
        c = b / a;
        printf("b / a = %d\n", c);
        printf("Size of c (b / a): %zu bytes\n", sizeof(c));
    } else {
        printf("Division by zero is not allowed.\n");
    }

    return 0;
}

我們簡單用sizeof做確認,可以看到c的size都是4bytes,也就是符合int32_t的型態。

Similar Posts