2015-11-03 58 views
1

sizeof(data_type)運算符返回字節數的和不八位字節,所以一個字節的大小可能不是8位。如何識別任何平臺上的字節大小?如何識別任何平臺上的字節大小?

+0

很確定一個字節在任何現代系統上總是8位...... –

+0

我其次。不過,並非所有的平臺都是字節可尋址的。摩托羅拉56K DSP只能處理24位字。一個非常令人煩惱的平臺除了音頻以外的其他任何事情... –

+0

@Russ Schultz因爲C不需要8位== 1字節,所以它可以移植到這樣的機器上。正是由於這種靈活性,C早期被廣泛接受,併成爲新神祕平臺的早期選擇。適應性是一把雙刃劍。 – chux

回答

4

我想你可以做sizeof(type) * CHAR_BIT來確定位數。爲CHAR_BIT的定義包含limits.h。

+0

這對於包含限制是非常有意義的。 –

0

一個字節通常是獨立於平臺的8位(基於下面的註釋編輯)。否則,你可以這樣做:

  1. 設置一個字節(或int)來-1
  2. 計算上述變量中​​的位數(除以sizeof(int),如果使用的是int)。
+0

「一個字節應該是獨立於平臺的8位」 - >不符合C規範。 – chux

+0

@chux編輯,謝謝。 – user1952500

+0

將字節或整數設置爲-1並假定它將以2的補碼形式表示是不可移植的。不是嗎? – user1969104