以 16 位元 short 為例:
| 類型 | 符號位 | 數值位 | 範圍 | 負數表示 |
|---|---|---|---|---|
short (有號) | 1 bit | 15 bits | -32,768 ~ 32,767 | 二補數 |
unsigned short | 0 | 16 bits | 0 ~ 65,535 | 無負數 |
2^N 環繞;有號溢位屬未定義行為。%d 對應有號,%u 對應無號。#include <stdio.h>
int main()
{
short s = 0x8000; // -32768
unsigned short us = 0xFFFF; // 65535
printf("Signed: %d (0x%04X)\n", s, s);
printf("Unsigned: %u (0x%04X)\n", us, us);
return 0;
}
輸出: Signed: -32768 (0x8000) Unsigned: 65535 (0xFFFF)
size_t, uint32_t)。-Wsign-compare)。