Long int си: Π‘ | Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² C ΠΈ C++

Twitter LinkedIn Facebook АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹

  • Π‘Ρ‚Π°Ρ‚ΡŒΡ
  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2Β ΠΌΠΈΠ½

Π‘Π»ΠΎΠΊ, относящийся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ систСмам Microsoft

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ для цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Π² C ΠΈ C++ прСдставлСны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚ΠΈ ограничСния Π·Π°Π΄Π°Π½Ρ‹ Π² стандартном Ρ„Π°ΠΉΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° C <limits.h>. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° C++ <limits> содСрТит <climits>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя <limits.h>.

Π’ MicrosoftΒ C Ρ‚Π°ΠΊΠΆΠ΅ допускаСтся объявлСниС цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ относятся ΠΊ цСлочислСнным Ρ‚ΠΈΠΏΠ°ΠΌ с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 8, 16, 32 ΠΈΠ»ΠΈ 64Β Π±ΠΈΡ‚. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Π½ΠΈΡ… см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ЦСлочислСнныС Ρ‚ΠΈΠΏΡ‹ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ для цСлочислСнных констант

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π°Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
CHAR_BITΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±ΠΈΡ‚ΠΎΠ² Π² наимСньшСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая Π½Π΅ являСтся Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ.8
SCHAR_MIN
МинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° signed char.–128
SCHAR_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° signed char.127
UCHAR_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° unsigned char.255Β (0xff)
CHAR_MINМинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° char.–128 (ΠΈΠ»ΠΈ 0, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ /J)
CHAR_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° char.–127 (ΠΈΠ»ΠΈ 255, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ /J)
MB_LEN_MAXМаксимальноС количСство Π±Π°ΠΉΡ‚ΠΎΠ² Π² многосимвольной константС.5
SHRT_MINМинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° short.-32768
SHRT_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° short.32767
USHRT_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° unsigned short.65Β 535Β (0xffff)
INT_MINМинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° int.-2147483647 — 1
INT_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° int.2147483647
UINT_MAX
МаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° unsigned int.
4Β 294Β 967Β 295Β (0xffffffff)
LONG_MINМинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° long.-2147483647 — 1
LONG_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° long.2147483647
ULONG_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° unsigned long.4Β 294Β 967Β 295Β (0xffffffff)
LLONG_MINМинимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° long long.–9Β 223Β 372Β 036Β 854Β 775Β 807 – 1
LLONG_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ°
long long
.
9Β 223Β 372Β 036Β 854Β 775Β 807
ULLONG_MAXМаксимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° unsigned long long.18Β 446Β 744Β 073Β 709Β 551Β 615 (0xffffffffffffffff)

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ прСдставлСниС цСлочислСнного Ρ‚ΠΈΠΏΠ°, компилятор Microsoft Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ°, относящСгося Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ систСмам ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

ЦСлочислСнныС константы Π² C

ΠΊΠ°ΠΊΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ int, float, char, double, wchar_t, bool ΠΈ void, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‚Π°Π±Π»ΠΈΡ†Π°

Π’ этом руководствС ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎΠ± основных Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ int, float, char ΠΈ Ρ‚.Π΄. Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C++, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C++?

Π’ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² C++ – это объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΈΠΏ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ…, связанных с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. НапримСр:

int age = 13;

Π—Π΄Π΅ΡΡŒ age – пСрСмСнная Ρ‚ΠΈΠΏΠ° int, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2 ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡ‚Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ основныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² C++, ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ (Π² Π±Π°ΠΉΡ‚Π°Ρ…):

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Π Π°Π·ΠΌΠ΅Ρ€ (Π² Π±Π°ΠΉΡ‚Π°Ρ…)
intΠ¦Π΅Π»ΠΎΠ΅ число2 ΠΈΠ»ΠΈ 4
floatΠŸΠ»Π°Π²Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ°4
doubleДвойная ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ°8
charсимвол1
wchar_tШирокий характСр2
boolΠ‘ΡƒΠ»Π΅Π²ΠΎ1
voidΠŸΡƒΡΡ‚ΠΎΠΉ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим эти Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

1. int

  • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово int Π² Π‘++ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния Ρ†Π΅Π»Ρ‹Ρ… чисСл. 12

    3. char

    • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово char ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для символов.
    • Π•Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ составляСт 1 Π±Π°ΠΉΡ‚.
    • Π’ C++ символы Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ”.
    • НапримСр:
    char test = 'h';
    

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ Π‘++ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° char, Π° Π½Π΅ Π² самом символС.

    4. wchar_t

    • Π¨ΠΈΡ€ΠΎΠΊΠΈΠΉ символ wchar_t ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… char, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ составляСт 2 Π±Π°ΠΉΡ‚Π° вмСсто 1.
    • Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для прСдставлСния символов, для использования ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся большС памяти, Ρ‡Π΅ΠΌ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа.
    • НапримСр:
    wchar_t test = L'ם'  // storing Hebrew character;
    
    

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π±ΡƒΠΊΠ²Ρƒ L ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ C++ 11 Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСны Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠ° символов фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° – char16_t ΠΈ char32_t.

    5. bool

    • Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… bool ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: true ΠΈΠ»ΠΈ false.
    • ЛогичСскиС значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ… ΠΈ Ρ†ΠΈΠΊΠ»Π°Ρ….
    • НапримСр:
    bool cond = false;
    

    6. void

    • ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово void ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° отсутствиС Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«Π½ΠΈΡ‡Π΅Π³ΠΎΒ» ΠΈΠ»ΠΈ Β«Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния».
    • ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ void, ΠΊΠΎΠ³Π΄Π° ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ функциях ΠΈ указатСлях.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° void.

    ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠ°

    ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚ΠΈΠΏΠΎΠ². Π’ C++ Π΅ΡΡ‚ΡŒ 4 ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ°:

    • signed;
    • unsigned;
    • short;
    • long.

    ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²:

    • int;
    • double;
    • char.

    Бписок ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…

    Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…Π Π°Π·ΠΌΠ΅Ρ€ (Π² Π±Π°ΠΉΡ‚Π°Ρ…)Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
    signed int
    4ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ†Π΅Π»Ρ‹Ρ… чисСл (эквивалСнтно int)
    unsigned int4ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ числа
    short2ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл (ΠΎΡ‚ -32768 Π΄ΠΎ 32767)
    longΠ½Π΅ ΠΌΠ΅Π½Π΅Π΅ 4ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл (эквивалСнт long int)
    unsigned long4ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈΠ»ΠΈ 0 (эквивалСнт unsigned long int)
    long long8ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл (эквивалСнт long long int)
    unsigned long long8ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈΠ»ΠΈ 0 (эквивалСнт unsigned long long int)
    long double12ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
    signed char1ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для символов (Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ -127 Π΄ΠΎ 127)
    unsigned char1ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для символов (ΠΎΡ‚ 0 Π΄ΠΎ 255)

    ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

    long b = 4523232;
    long int c = 2345342;
    long double d = 233434.56343;
    short d = 3434233; // Error! out of range
    unsigned int a = -5;    // Error! can only store positive numbers or 0
    

    ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

    Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ. НапримСр: массивы, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Ρ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, структуры ΠΈ Ρ‚.Π΄.

    АрхитСктура процСссора

    . ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² Π‘++ Ρ‚ΠΈΠΏΡ‹ int ΠΈ long ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π±Π°ΠΉΡ‚Π°?

    спросил

    ИзмСнСно 9 Π»Π΅Ρ‚, 9 мСсяцСв Π½Π°Π·Π°Π΄

    ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 15 тысяч Ρ€Π°Π·

    МногиС источники, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Microsoft, ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π° Ρ‚ΠΈΠΏ int, Ρ‚Π°ΠΊ ΠΈ Π½Π° long ΠΊΠ°ΠΊ Π½Π° 4 Π±Π°ΠΉΡ‚Π° ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ (со Π·Π½Π°ΠΊΠΎΠΌ) ΠΎΡ‚ -2 147 483 648 Π΄ΠΎ 2 147 483 647.

    Какой смысл ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Ссли ΠΎΠ½ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ обСспСчиваСт Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ?

    • c++
    • Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° процСссора

    8

    ЕдинствСнноС, Ρ‡Ρ‚ΠΎ гарантируСтся для цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ²:

    1. sizeof(char) == 1
    2. sizeof(char) <= sizeof(short)
    3. sizeof(short) <= sizeof(int)
    4. sizeof(int) <= sizeof(long)
    5. sizeof(long) <= sizeof(long long)
    6. sizeof(char) * CHAR_BIT >= 8
    7. sizeof(short) * CHAR_BIT >= 16
    8. sizeof(int) * CHAR_BIT >= 16
    9. sizeof(long) * CHAR_BIT >= 32
    10. sizeof(long long) * CHAR_BIT >= 64

    ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Благодаря (4) ΠΈ long , ΠΈ int ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 32 Π±ΠΈΡ‚ (благодаря (9)).

    13

    Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C++ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ long Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΆΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ , ΠΊΠ°ΠΊ int , поэтому Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΊΡ€ΠΈΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π² сцСнарии, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ большоС : это ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ опрСдСляСтся Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. На Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ мСня Π΅ΡΡ‚ΡŒ int Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 4 ΠΈ long Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 8 Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π° ΠΌΠΎΠ΅ΠΉ машинС с Linux.

    1

    Как ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π»Π΅ΠΆΠ°Ρ‰Π΅Π΅ Π² основС вопроса, Π²Π΅Ρ€Π½ΠΎ лишь частично, Ρ‚.Π΅. Π½Π΅ выполняСтся для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Если Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ситуации, «Долгая Π΄ΠΎΡ€ΠΎΠ³Π° ΠΊ 64 Π±ΠΈΡ‚Π°ΠΌΒ» Π”ΠΆ. Маши даст Π²Π°ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ прСдставлСниС ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… силах ΠΈ ΠΈΡ… взаимодСйствии.

    ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€, C начался с char (8 Π±ΠΈΡ‚) ΠΈ int (16 Π±ΠΈΡ‚). Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… (16 Π±ΠΈΡ‚) ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… (32 Π±ΠΈΡ‚Π°), Π° int ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 16- ΠΈΠ»ΠΈ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ СстСствСнным Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. Когда появились 64 Π±ΠΈΡ‚Π°, long long Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊΠ°ΠΊ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ, ΠΈ Π±Ρ‹Π»ΠΈ внСсСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π² мСньшиС Ρ‚ΠΈΠΏΡ‹ Π½Π° 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. ВсС ΡΡ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ с 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ int , Π½ΠΎ long сохраняло Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ опрСдСлСния, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠΌΠ΅Π»ΠΈ 64-Π±ΠΈΡ‚Π½ΠΎΠ΅ long , Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Windows?) сохраняли long Π΄ΠΎ 32 Π±ΠΈΡ‚, вСроятно, ΠΈΠ·-Π·Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости (Ρƒ Unix долгая история принятия long ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π² API Windows Π±Ρ‹Π»ΠΎ большС остатков Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π΄Π° int Π±Ρ‹Π»ΠΎ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, long Π±Ρ‹Π» СдинствСнным 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ). BTW typedefs ( intXX_t , intptr_t ) Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ясным, с риском Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ сСмСйство intXX_t форсируСт постоянный Ρ€Π°Π·ΠΌΠ΅Ρ€, Ссли ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.

    1

    НСт, Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 4 Π±Π°ΠΉΡ‚Π°. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C++ оставляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ опрСдСляСмым Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

    На Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€.

    2

    Он Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ большС. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ GCC, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ 8 Π±Π°ΠΉΡ‚ΠΎΠ², ΠΊΠΎΠ³Π΄Π° я использовал Π΅Π³ΠΎ Π½Π° своСй машинС. Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° стандарта ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ гласит, Ρ‡Ρ‚ΠΎ эти Ρ‚ΠΈΠΏΡ‹ Β«Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ XΒ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, взглянитС Π½Π° ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ стандартизированный long long Π² C++11. ΠΏΠΎΠΊΠ° ΠΎΠ½ соотвСтствуСт трСбованиям.По стандарту ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠ³ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ long long 256 Π±ΠΈΡ‚, ΠΈ это Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π·Π°ΠΊΠΎΠ½Π½ΠΎ.

    БпСцификация языка C++ просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ long Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ мСньшС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° int .

    РаньшС Π±Ρ‹Π»ΠΎ стандартно ΠΈΠΌΠ΅Ρ‚ΡŒ int = 2 Π±Π°ΠΉΡ‚Π° ΠΈ long = 4 Π±Π°ΠΉΡ‚Π°. По ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ int выросло, Π° long ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° компиляторах Windows). Π― ΠΌΠΎΠ³Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ long остался Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠ· сообраТСний ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости...

    3

    Никто Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ» Π½Π° ваш вопрос, ΠΊΡ€ΠΎΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, AProgrammer.

    Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C/C++ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ описал ГривСс. Π­Ρ‚ΠΎ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык C ΠΈ C++, Π³Π΄Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ компилятора ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящиС для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹. НСкотороС врСмя (для Windows 3.1 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсий, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄ΠΎ Windows 95) ΠΊΠΎΠ΄ C для Windows ΠΈΠΌΠ΅Π» 16-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ UNIX, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Solaris, HPUX ΠΈ AIX, ΠΈΠΌΠ΅Π»ΠΈ 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число.

    Однако соврСмСнныС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ (начиная с 386-Π³ΠΎ) ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π½Ρ‹Π΅ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ рСгистры, ΠΈ адрСсация памяти, выровнСнная ΠΏΠΎ 32-Π±ΠΈΡ‚Π½ΠΎΠΌΡƒ, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ доступ с 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ΄ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС с 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ числом, особСнно для массивов Ρ†Π΅Π»Ρ‹Ρ… чисСл, Ρ‡Π΅ΠΌ с 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ числом.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 16-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число Π² 32-Π±ΠΈΡ‚Π½ΠΎΠΌ рСгистрС, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 16-ΠΉ Π±ΠΈΡ‚ вмСсто 32-Π³ΠΎ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ с 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ числом ΠΏΡ€ΠΎΡ‰Π΅, Π΄Π°ΠΆΠ΅ Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅.

    Π”ΡƒΠΌΠ°ΡŽ, это зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Они ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ, Π½ΠΎ это зависит ΠΎΡ‚ поставщика. Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ поставщики просто Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ синтаксичСски "ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ" (Ρ‚.Π΅. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… Π² свой ΠΊΠΎΠ΄, ΠΈ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ). ВрСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ языка.

    Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅

    Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Google

    Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Facebook

    Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ

    ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

    ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

    ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π½Π΅ отобраТаСтся

    ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

    ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

    ВрСбуСтся, Π½ΠΎ Π½Π΅ отобраТаСтся

    c β€” Каков историчСский контСкст для long ΠΈ int, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€?

    спросил

    ИзмСнСно 11 Π»Π΅Ρ‚, 9 мСсяцСв Π½Π°Π·Π°Π΄

    ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 1ΠΊ Ρ€Π°Π·

    Богласно многочислСнным ΠΎΡ‚Π²Π΅Ρ‚Π°ΠΌ здСсь, long ΠΈ int ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 32 Π±ΠΈΡ‚Π° Π½Π° распространСнных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Π² C ΠΈ C++ (Windows ΠΈ Linux, 32 ΠΈ 64 Π±ΠΈΡ‚. ) (я знаю, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ стандарта, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Π½Π°Π±Π»ΡŽΠ΄Π°Π΅ΠΌΡ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹.)

    Π˜Ρ‚Π°ΠΊ, ΠΌΠΎΠΉ вопрос: ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°? РаньшС я всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π», Ρ‡Ρ‚ΠΎ long Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, Π° int 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ. Π― Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ это Β«Π΄ΠΎΠ»ΠΆΠ½ΠΎΒ» Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, ΠΌΠ½Π΅ просто Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ сюда ΠΏΠΎΠΏΠ°Π»ΠΈ.

    • c
    • Ρ€Π°Π·ΠΌΠ΅Ρ€
    • история
    • int
    • long-integer

    3

    ΠžΡ‚ C99 обоснованиС (PDF) Ρ€Π°Π·Π΄Π΅Π»Π° 6.2.5:

    [...] Π’ 1970-Ρ… Π³ΠΎΠ΄Π°Ρ… 16-Π±ΠΈΡ‚Π½Ρ‹ΠΉ C (для PDP-11) ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ прСдставлСнный Ρ„Π°ΠΉΠ» информация с 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ быстро устарСли ΠΈΠ·-Π·Π° дисков прогрСсс. Π›ΡŽΠ΄ΠΈ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ Π½Π° 32-Π±ΠΈΡ‚Π½ΡƒΡŽ файловая систСма, сначала с использованиСм int[2] конструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ ΠΈ нСэффСктивно пСрСносим Π½Π° 32-Π±ΠΈΡ‚Π½ΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅.

    Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ‚ΠΈΠΏ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² язык, хотя это Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ C Π½Π° PDP-11, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 32-Π±ΠΈΡ‚Π½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ. Π”Π°ΠΆΠ΅ ΠΊΠ°ΠΊ Π‘Ρ‚Π°Π»ΠΈ доступны 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΌΠΈΠ½ΠΈΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ наряду с 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ систСмами люди ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±/Ρƒ int для эффСктивности, рСзСрвирования long для случаСв, ΠΊΠΎΠ³Π΄Π° большиС Ρ†Π΅Π»Ρ‹Π΅ числа Π±Ρ‹Π»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Π±Ρ‹Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ эффСктивСн Π½Π° 16-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмы. Оба ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² C, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ доступным для 16 Π±ΠΈΡ‚, long для 32 Π±ΠΈΡ‚ ΠΈ int ΠΊΠ°ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎ для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π—Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ числа 16 ΠΈΠ»ΠΈ 32 Π² язык, ΠΊΠ°ΠΊ компиляторы C сущСствовали ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ 24- ΠΈ 36-Π±ΠΈΡ‚Π½Ρ‹Π΅ процСссоры, Π° скорСС для ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для 32 Π±ΠΈΡ‚Π° ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости.

    PDP-11 C ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с int ΠΊΠ°ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ избСгая нСобходимости Π² long ; Π½ΠΎ это заставило Π±Ρ‹ людСй ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ случаСв использования int Π΄ΠΎ short ΠΈΠ»ΠΈ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ³ΠΎ сниТСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° PDP-11. Π’ Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ влияниС Π½Π° исходный ΠΊΠΎΠ΄, воздСйствиС Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π»ΠΈ Π±Ρ‹ Ρ…ΡƒΠΆΠ΅, Π΄Π°ΠΆΠ΅ Π² 1976 Π³ΠΎΠ΄Ρƒ. К 1990-ΠΌ Π³ΠΎΠ΄Π°ΠΌ с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ установлСнная Π±Π°Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΈ с ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ использованиС динамичСских ссылок Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, влияниС измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ срСда Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ высока, Ρ‡Ρ‚ΠΎ ΠΌΠ°Π»ΠΎ ΠΊΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ это Ρ‚Π΅Ρ€ΠΏΠ΅Ρ‚ΡŒ, хотя это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ ΠΏΡ€ΠΈ создании новая срСда. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² пространств ΠΈΠΌΠ΅Π½, Π΄ΠΎΠ±Π°Π²ΠΈΠ» 64-Π±ΠΈΡ‚Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΊ ΠΈΡ… 32-Π±ΠΈΡ‚Π½ΠΎΠΌΡƒ Π‘Ρ€Π΅Π΄Ρ‹ C, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ΅ имя, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π±Ρ‹Π» самым ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ. [...]

    2

    Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² C ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π΄ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ PDP-11. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ Π±Π°ΠΉΡ‚Ρ‹, слова (16 Π±ΠΈΡ‚) ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ слова (32 Π±ΠΈΡ‚Π°). Когда C ΠΈ UNIX Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ (я Π΄ΡƒΠΌΠ°ΡŽ, Interdata 832), Π΄Π»ΠΈΠ½Π° слова Π±Ρ‹Π»Π° 32 Π±ΠΈΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ исходного ΠΊΠΎΠ΄Π°, long ΠΈ int Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ строго

    sizeof(short) ≀ sizeof(int) ≀ sizeof(long) .

    Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ машин Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅ΡŽΡ‚ sizeof(int) = sizeof(long) , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ 16 Π±ΠΈΡ‚ ΡƒΠΆΠ΅ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹, Π½ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ long long, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 64 Π±ΠΈΡ‚Π°, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

    ОбновлСниС строго говоря, я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΡΠΊΠ°Π·Π°Ρ‚ΡŒ "компиляторы", ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ компиляторов ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½Π°Π±ΠΎΡ€Π° инструкций. GCC ΠΈ Microsoft, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

    2

    Π•Ρ‰Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅ 70-Ρ… ΠΈ Π½Π°Ρ‡Π°Π»Π΅ 80-Ρ… ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π±Ρ‹Π»ΠΈ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ, поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ char Π±Ρ‹Π» 8-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, int β€” 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, Π° long β€” 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ. Π’ ΠΊΠΎΠ½Ρ†Π΅ 80-Ρ… ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, поэтому int стал 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, Π½ΠΎ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя оставался 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ.

    Π—Π° послСдниС 10 Π»Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ 64-Π±ΠΈΡ‚Π½Ρ‹ΠΌ вычислСниям, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнной ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся LP64, Π³Π΄Π΅ int ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅, Π° long Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ 64-Π±ΠΈΡ‚Π½Ρ‹Π΅.

    Π˜Ρ‚ΠΎΠ³: Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² стандартС), ΠΈ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΈΠΏΡ‹ фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .

    Насколько я понимаю, стандарт C Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ long ΠΈΠΌΠ΅Π» Π΄Π»ΠΈΠ½Ρƒ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 32 Π±ΠΈΡ‚ ΠΈ Π±Ρ‹Π» Π½Π΅ мСньшС int . Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, int всСгда (я Π΄ΡƒΠΌΠ°ΡŽ) Ρ€Π°Π²Π΅Π½ собствСнному Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ слова Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.

    Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ стандарты, 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ распространСны; ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ int , вСроятно, Π±Ρ‹Π» Π±Ρ‹ Ρ€ΠΎΠ΄Π½Ρ‹ΠΌ 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ, Π° long Π±Ρ‹Π» Π±Ρ‹ Π²Π΄Π²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅ 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ.

    2

    Π’ 16-разрядных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах int Π±Ρ‹Π» 16-разрядным, Π° long β€” 32-разрядным.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *