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的型態。