C unsigned long: C — Data Types — Tutorialspoint
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ unsigned long ΠΈ unsigned long long?
Π― ΠΎΠΆΠΈΠ΄Π°Π», ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ. ΠΠΎ ΠΎΠ±Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ 8 Π±Π°ΠΉΡ.
#include <iostream>
using namespace std;
int main()
{
cout<<"Size of long:"<<sizeof(unsigned long)<<"\n";
cout<<"Size of Long Long:"<< sizeof(unsigned long long)<<"\n";
}
Output:
Size of long:8
Size of Long Long:8
c++
long-integer
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
ΠΡΡΠΎΡΠ½ΠΈΠΊ
cppcoder Β Β
08 ΠΌΠ°ΡΡΠ° 2012 Π² 04:40
3 ΠΎΡΠ²Π΅ΡΠ°
- Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ unsigned long ΠΈ UINT64
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ unsigned long ΠΈ UINT64 ? Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅, Π½ΠΎ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ UINT64 ΡΠ²Π»ΡΠ΅ΡΡΡ : typedef unsigned __int64 UINT64 (Ρ ΠΏΠΎΠΌΠΎΡΡΡ StdAfx.h)
- ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ unsigned long long
Π― ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ unsigned long long Π² C++ ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠΎΠ³Π΄Π° Ρ ΡΠΌΠ½ΠΎΠΆΠ°Ρ 5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π½Π° 5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π²ΠΎΡ ΡΠ°ΠΊ: unsigned long long test = 5000000*5000000; ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ test ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 18446744072704921600 Π²ΠΌΠ΅ΡΡΠΎ 25000000000000. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, unsigned…
10
ΠΡΠΎ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠ°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
unsigned long
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 32 Π±ΠΈΡ. unsigned long long
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 64 Π±ΠΈΡ. (ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ
Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ.)
ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΡΠΎΠ³Π»Π°ΡΡΠ΅ΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π° ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 64 Π±ΠΈΡ.
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π° ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ
unsigned long long
ΠΎΠ±ΡΠ΅ΠΊΡΡ unsigned long
, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΎ Π½Π΅ΡΠ²Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠ΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ unsigned long long
ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅ΠΉ unsigned long
(Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΉ, ΠΊΠ°ΠΊ printf
; ΡΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅).
ΠΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, — ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ . Π’ΠΈΠΏΡ unsigned long*
ΠΈ unsigned long long*
Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½Ρ, ΠΎΠ½ΠΈ Π½Π΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°:
int main()
{
unsigned long* ulp = 0;
unsigned long long* ullp = 0;
ulp = ullp; // illegal
}
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅, ΠΠΎΠ³Π΄Π° Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ g++:
c.cpp: In function βint main()β:
c.cpp:5:11: error: cannot convert βlong long unsigned int*β to βlong unsigned int*β in assignment
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅: ΡΡΠ°Π½Π΄Π°ΡΡ C++ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ» ΡΠΈΠΏΡ long long
ΠΈ unsigned long long
Π΄ΠΎ 2011 Π³ΠΎΠ΄Π°. C Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΈΡ
ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ 1999 Π³ΠΎΠ΄Π°, ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ΅Π΄ΠΊΠΎΡΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² pre-C++2011 (ΠΈ pre-C99), ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΡ
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
Keith Thompson Β Β
08 ΠΌΠ°ΡΡΠ° 2012 Π² 04:44
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
Vijay Agrawal Β Β
08 ΠΌΠ°ΡΡΠ° 2012 Π² 04:49
0
Π‘ΡΠ°Π½Π΄Π°ΡΡ Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ long long
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° , ΡΡΠΎ ΠΈ long
, ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π»Ρ unsigned
ΡΠΈΠΏΠΎΠ², long
ΠΈ int
.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ
J.N. Β Β
08 ΠΌΠ°ΡΡΠ° 2012 Π² 04:44
- unsigned long long ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Ρ uint64_t?
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ class my_template_class<uint64_t M>: public my_template_class_base<uint64_t> { …. } class my_template_class<unsigned long long,M>: public my_template_class_base<unsigned long long> { …. } ΠΡΠΎ…
- ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· unsigned long long Π² unsigned int
Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π» Π²ΠΎΠΊΡΡΠ³, ΠΏΡΡΠ°ΡΡΡ Π½Π°ΠΉΡΠΈ ΠΎΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ, Π½ΠΎ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°. Π― Π²ΠΈΠ΄Π΅Π» ΡΡΠΎΡ ΠΎΡΠ²Π΅Ρ, Π³Π΄Π΅ ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ: ΠΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π·Π»ΠΈΡΠ½Ρ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Π±Π΅Π· Π·Π½Π°ΠΊΠ°; ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π² ΡΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ° Ρ ΠΎΡΠΎΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½. Π’Π°ΠΊ ΡΡΠΎ ΠΆΠ΅…
ΠΠΎΡ ΠΎΠΆΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ:
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ unsigned int 2 ΡΠ°Π·Π° ΠΈ unsigned long 1 ΡΠ°Π· Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ 64 bit?
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ *(unsigned*)d = *(unsigned*)s; d+=4; s+=4; *(unsigned*)d = *(unsigned*)s; d+=4; s+=4; ΠΈ *(unsigned long*)d = *(unsigned long*)s; d+=8; s+=8; Π½Π° 64-Π±ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ?
ΠΠ°ΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏ unsigned long long?
Π― ΠΏΡΡΠ°ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏ unsigned long long int . ΠΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ error: integer constant is too large for long type . ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½ΠΈΠΆΠ΅ : unsigned long long temp =…
unsigned long long to binary
Π― ΠΏΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π±ΠΈΡΡ unsigned long long Π² c++, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π»ΠΈ Π±ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎ ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ…
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ unsigned long ΠΈ UINT64
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ unsigned long ΠΈ UINT64 ? Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅, Π½ΠΎ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ UINT64 ΡΠ²Π»ΡΠ΅ΡΡΡ : typedef unsigned __int64 UINT64 (Ρ ΠΏΠΎΠΌΠΎΡΡΡ StdAfx. h)
ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ unsigned long long
Π― ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ unsigned long long Π² C++ ΠΈ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠΎΠ³Π΄Π° Ρ ΡΠΌΠ½ΠΎΠΆΠ°Ρ 5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π½Π° 5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π²ΠΎΡ ΡΠ°ΠΊ: unsigned long long test = 5000000*5000000;…
unsigned long long ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Ρ uint64_t?
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ class my_template_class<uint64_t M>: public my_template_class_base<uint64_t> { …. } class…
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· unsigned long long Π² unsigned int
Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π» Π²ΠΎΠΊΡΡΠ³, ΠΏΡΡΠ°ΡΡΡ Π½Π°ΠΉΡΠΈ ΠΎΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ, Π½ΠΎ Π½Π΅ ΡΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°. Π― Π²ΠΈΠ΄Π΅Π» ΡΡΠΎΡ ΠΎΡΠ²Π΅Ρ, Π³Π΄Π΅ ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ: ΠΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π·Π»ΠΈΡΠ½Ρ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Π±Π΅Π· Π·Π½Π°ΠΊΠ°;…
Π ΡΠ΅ΠΌ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ long unsigned int ΠΈ unsigned long int
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±Π΅ΡΠ΅Ρ ΡΡΠΈ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ . long unsigned int a; unsigned long int a;
C++ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ unsigned int ΠΈ unsigned long int
Π― Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ C++ Π½Π° Windows Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Visual Studio, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Visual Studio 2015 Update 3. ΠΠ»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ DSP, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ unsigned int / unsigned long ΡΠΈΠΏ…
unsigned long long int output Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΡΠ΅ΡΠΏΠΈΡ Π½Π΅ΡΠ΄Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΡΠ΅Π», ΡΠ΅ΠΌ 111111111111111111 (19 ΡΠ°Π· ΠΏΠΎ 1). Ρ ΠΎΡΡ unsigned long long int Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄ΠΎ 18446744073709551615 (19 ΡΠΈΡΠ΅Π»), Π½ΠΎ 111111111111111111…
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΈΠΏΠΎΠ² | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C ΠΈ C++
ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ° void, ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ. ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΠ΅ΠΉ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²:
signed
unsigned
short
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ signed, unsigned, long ΠΈ short ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ. Π ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ signed ΠΈ unsigned, long ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠΈΠΏΡ double. Π’Π°Π±Π»ΠΈΡΠ° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ANSI Π‘ Π΄Π»Ρ 16-Π±ΠΈΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΠΈΠΏΠ° Π² Π±ΠΈΡΠ°Ρ
ΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Borland Π‘++.
Π’ΠΈΠΏ | ΠΠ»ΠΈΠ½Π° Π² Π±ΠΈΡΠ°Ρ | ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ |
---|---|---|
char | 8 | ΠΎΡ-128 Π΄ΠΎ 127 |
unsigned char | 8 | ΠΎΡ 0 Π΄ΠΎ 255 |
signed char | 8 | ΠΎΡ-128 Π΄ΠΎ 127 |
int | 16 | ΠΎΡ-32768 Π΄ΠΎ 32767 |
unsigned int | 16 | ΠΎΡ 0 Π΄ΠΎ 65535 |
signed int | 16 | ΠΎΡ -32768 Π΄ΠΎ 32767 |
short int | 16 | ΠΎΡ -32768 Π΄ΠΎ 32767 |
unsigned short int | 16 | ΠΎΡ 0 Π΄ΠΎ 65535 |
signed short int | 16 | ΠΎΡ -32768 Π΄ΠΎ 32767 |
long int | 32 | ΠΎΡ -2147483648 Π΄ΠΎ 2147483647 |
unsigned long int | 32 | ΠΎΡ 0 Π΄ΠΎ 4294967295 |
signed long int. | 32 | ΠΎΡ -2147483648 Π΄ΠΎ 2147483647 |
float | 32 | ΠΎΡ 3.4Π΅-38 Π΄ΠΎ 3.4Π΅+38 |
double | 64 | ΠΎΡ 1.7Π΅-308 Π΄ΠΎ 1.7e+308 |
long double | 80 | ΠΎΡ 3.4Π΅-4932 Π΄ΠΎ 1.1e+4932 |
Π’Π°Π±Π»ΠΈΡΠ°Β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ 32-Π±ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ .
Π’ΠΈΠΏ | ΠΠ»ΠΈΠ½Π° Π² Π±ΠΈΡΠ°Ρ | ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ-128 Π΄ΠΎ 127 |
---|---|---|
char | 8 | ΠΎΡ 128 Π΄ΠΎ 127 |
unsigned char | 8 | ΠΎΡ 0 Π΄ΠΎ 255 |
signed char | 8 | ΠΎΡ -128 Π΄ΠΎ 127 |
int | 32 | ΠΎΡ -2147483648 Π΄ΠΎ 2147483647 |
unsigned int | 32 | ΠΎΡ 0 Π΄ΠΎ 4294967295 |
signed int | 32 | ΠΎΡ -2147483648 Π΄ΠΎ 2147483647 |
short int | 16 | ΠΎΡ -32768 Π΄ΠΎ 32767 |
unsigned short int | 16 | ΠΎΡ 0 Π΄ΠΎ 65535 |
signed short int | 16 | ΠΎΡ -32768 Π΄ΠΎ 32767 |
long int | 32 | ΠΎΡ -2147483648 Π΄ΠΎ 2147483647 |
unsigned long int | 32 | ΠΎΡ 0 Π΄ΠΎ 4294967295 |
signed long int | 32 | ΠΎΡ -2147483648 Π΄ΠΎ 2147483647 |
float | 32 | ΠΎΡ 3.![]() |
double | 64 | ΠΎΡ 1.7Π΅-308 Π΄ΠΎ 1.7Π΅+308 |
long double | 80 | ΠΎΡ 3.4Π΅-4932 Π΄ΠΎ 1.1e+4932 |
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ signed Π΄Π»Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ (Π½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.
Π Π°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΏΠΎΡΠΎΠ±Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±ΠΈΡΠ°. ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΏ, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΠΉ, ΡΡΠΎ ΡΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΠΊ ΡΠΈΡΠ»Π°. ΠΡΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π±ΠΈΡ ΡΠ°Π²Π΅Π½ 0, ΡΠΎ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅, Π° Π΅ΡΠ»ΠΈ 1 — ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ:
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΡ, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ β127 Π² Π²ΠΈΠ΄Π΅, ΡΠ»Π΅Π³ΠΊΠ° ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΌ ΠΎΡ Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΡΠΈΠΏΠ½ΡΠΌ. Π£ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π²ΡΠ΅ Π±ΠΈΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ, ΠΈ ΠΊ ΡΠΈΡΠ»Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ 1. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, β127 Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
1111111110000001
ΠΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠΈΡΠ»Π° Π²Π°ΠΆΠ½Ρ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΌΠ΅ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ Β«Π±ΡΠ°ΡΡΡΒ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, 32767 Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
01111111 11111111
ΠΡΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² 1, ΡΠΎ ΡΠΈΡΠ»ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ β1. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ unsigned int, ΡΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠΉ Π±ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΡΠΈΡΠ»ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ 65535.
Β
ΠΠ΅ΡΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° C++, ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ | Visual C++ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅ΠΌΡ | Π‘ΡΠ°ΡΡΠΈ | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Realcoding.Net
Π§ΡΠΎ Π±Ρ Π½Π°ΡΠ°ΡΡ ΠΈΠ·ΡΡΠ°ΡΡ C++ ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ
ΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Visual C++. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ‘New’ Π² ΠΌΠ΅Π½Ρ ‘File’. ΠΡΠΎΠ²Π΅ΡΡΠ΅, ΡΡΠΎ Π±Ρ Π²
Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»Π΅ ‘New’ Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ° ‘Projects’. Π ΡΠΏΠΈΡΠΊΠ΅ ΡΠΈΠΏΠΎΠ²
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ‘Win32 Console Application’. 64
C: ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ — Linux FAQ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π½Π° ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Ρ ΡΠ°Π½ΡΡΠΈΠ΅ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π ΡΠ·ΡΠΊΠ΅ C ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ.
Π―Π·ΡΠΊ C ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ char, int, float ΠΈ double. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ»ΠΎΠ² signed, unsigned ΠΈ long, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ².
Π¦Π΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° int ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΡΠ΅ΡΡΡΠ΅Ρ Π±Π°ΠΉΡΠ°Ρ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΡΠΈΠΏΠ° float ΠΈΠ»ΠΈ double, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΎ Π² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅.
int count = 8;
Π’Π°ΠΊΠΆΠ΅ Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠΌΠ΅ΡΡΡΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ (unsigned int), ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ (short int),Β Π΄Π»ΠΈΠ½Π½ΡΠ΅ (long int) ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π΄Π»ΠΈΠ½Π½ΡΠ΅ (long long int) ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ:
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° short int ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ -32768 Π΄ΠΎ 32768 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π±Π°ΠΉΡΠ° ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° unsigned short int ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ 0 Π΄ΠΎ 65535 Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π±Π°ΠΉΡΠ° ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° int ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ -2147483648 Π΄ΠΎΒ 2147483648 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ° ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° unsigned int ΠΌΠΎΠΆΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ 0 Π΄ΠΎ 4294967295 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ° ΠΏΠ°ΠΌΡΡΠΈ.
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° long int ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ -2147483648 Π΄ΠΎΒ 2147483648 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Π½Π° 32-Π±ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ -9223372036854775807 Π΄ΠΎ 9223372036854775807 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΠΎΡΠ΅ΠΌΡ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° 64-Π±ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° unsigned long int ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ 0 Π΄ΠΎ 4294967295 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ Π±Π°ΠΉΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Π½Π° 32-Π±ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ 0 Π΄ΠΎ 18446744073709551615 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΠΎΡΠ΅ΠΌΡ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° 64-Π±ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° long long int ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ -9223372036854775807 Π΄ΠΎ 9223372036854775807 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΠΎΡΠ΅ΠΌΡ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° Π»ΡΠ±ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
- ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° unsigned long long int ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΎΡ 0 Π΄ΠΎ 18446744073709551615 ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΠΎΡΠ΅ΠΌΡ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° Π»ΡΠ±ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ .
ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ int ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ long ΠΈ short. ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (unsigned), ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (signed), ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΌΠΈ:
long lightspeed = 299792458;
long int lightspeed = 299792458;
signed long lightspeed = 299792458;
signed long int lightspeed = 299792458;
Π§ΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΡΠΈΠΏΠ° float ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΡΠ΅ΡΡΡΠ΅Ρ Π±Π°ΠΉΡΠ°Ρ ΠΏΠ°ΠΌΡΡΠΈ.
float pi = 3.14;
ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° float, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° double ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π°, Π½ΠΎ ΡΡΠΈ ΡΠΈΡΠ»Π° ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ Π½ΠΈΡ
ΠΎΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π²ΠΎΡΠ΅ΠΌΡ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ.
double score = 53.92819384;
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ long double Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ.
Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ
Π‘ΠΈΠΌΠ²ΠΎΠ»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° char ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π°ΠΉΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. Π₯ΠΎΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ», Π² ΠΏΠ°ΠΌΡΡΠΈ Ρ ΡΠ°Π½ΠΈΡΡΡ Π΅Π³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
char initial = 'd';
ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΠΊΠΎΠ²Π°Ρ (signed char) ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Π°Ρ (unsigned char) ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
Π‘ΡΡΠΎΠΊΠΈ
Π ΡΠ·ΡΠΊΠ΅ C Π΄Π»Ρ ΡΡΡΠΎΠΊ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Π² ΡΠ°ΠΊΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
, ΠΊΠ°ΠΊ Python. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π‘ΡΡΠΎΠΊΠΈΒ».
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΠ·ΡΠΊΠ° C99 Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° bool (ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ true ΠΈ false), ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π±ΡΠ΄ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ _Bool, Ρ ΠΎΡΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ <stdbool.h> ΡΠΈΠΏ _Bool Π±ΡΠ΄Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΡΠΈΠΏΡ bool.
#include <stdio.h>
#include <stdbool.h>
Β
int main()
{
Β Β bool run = false;
Β
Β Β if (run == true)
- Β Β Β Β printf("Π Π°Π±ΠΎΡΠ°Π΅Ρ...\n");
Β Β else
- Β Β Β Β printf("ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.\n");
Β
Β Β return 0;
}
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ° bool ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ -std=c99.
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ±Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΅Π΅ ΠΈΠ·Π²Π½Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. Π’Π°ΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ.
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. Π’Π°ΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΠΎΠ²Π° static, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΠ΅Π³ΠΎΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
static int age;
ΠΡΠΈΠΌΠ΅Ρ:
#include <stdio.h>
Β
{
Β Β int var = 1;
Β Β static int svar = 1;
Β
- Β Β printf("var = %d, static = %d\n", var, svar);
Β Β var++;
Β Β svar++;
}
Β
int main()
{
Β Β int i;
Β Β for (i = 0; i < 5; i++)
Β Β {
Β Β }
Β
Β Β return 0;
}
ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°
Π―Π·ΡΠΊ C ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΡΠΈΠΌΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ:
auto
break
case
char
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
sizeof
static
struct
switch
typedef
union
unsigned
void
while
ΠΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π±ΡΠΊΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΈΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ:
#include <stdio.h>
Β
int x = 5;
Β
int main()
{
Β Β int y = 8;
Β Β
- Β Β printf("ΠΠ»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ: %i\n", x);
- Β Β printf("ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ: %i\n", y);
Β Β
Β Β return 0;
}
ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
Digital Chip
ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ ΠΌΠ΅ΡΡΠΎ, ΡΠ°Π·Π½ΠΎΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ°. Π Π‘ΠΈ Π½Π΅Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ°ΠΌΡΡΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΡΠΎ ΠΎΡΠ΄Π°Π½ΠΎ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΏΠ° int Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ 16 Π±ΠΈΡ, Π² Π΄ΡΡΠ³ΠΎΠΌ β 32 Π±ΠΈΡΠ°, Π² ΡΡΠ΅ΡΡΠ΅ΠΌ β 8 Π±ΠΈΡ. ΠΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΡΠ°Π²Π΄Π°, Π²ΡΠ΅ ΡΡΡΠ΅ΠΌΡΡΡΡ ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΡΠΈΠΏ int, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 2 Π±Π°ΠΉΡΠ°, Π° ΡΠΈΠΏ char β ΠΎΠ΄ΠΈΠ½.
Π― Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΡΡΠΏΠΈΠ», Π½Π΅ ΠΌΠΎΠ³ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΠΏ double Π² AVR-GCC. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ°Π΅ΡΡ Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΡΠΈΠΏΠ° int ΠΈ char, Π° ΠΊ ΡΠΈΠΏΠ°ΠΌ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΏΡΠΈΠ±Π΅Π³Π°Π΅ΡΡ Π½Π΅ ΡΠ°ΡΡΠΎ, Π² ΡΠ²ΡΠ·ΠΈ Ρ ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΎΡΡΡΡ.
ΠΠΎΡΡΠΎΠΌΡ, Π½Π° Π±ΡΠ΄ΡΡΠ΅Π΅, ΠΎΡΡΠ°Π²Π»Ρ ΡΠ΅Π±Π΅ Π·Π΄Π΅ΡΡ ΠΏΠ°ΠΌΡΡΠΊΡ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° AVR-GCC ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° AVR-GCC
Π’ΠΈΠΏ | Π Π°Π·ΠΌΠ΅Ρ Π² Π±Π°ΠΉΡΠ°Ρ (Π±ΠΈΡΠ°Ρ ) | ΠΠ½ΡΠ΅ΡΠ²Π°Π» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ |
---|---|---|
char | 1 (8) | -128 .. 127 |
unsigned char | 1 (8) | 0 .![]() |
signed char | 1 (8) | -128 .. 127 |
int | 2 (16) | -32768 .. 32767 |
unsigned int | 2 (16) | 0 .. 65535 |
signed int | 2 (16) | -32768 .. 32767 |
short int | 2 (16) | -32768 .. 32767 |
unsigned short int | 2 (16) | 0 .. 65535 |
signed short int | 2 (16) | -32768 .. 32767 |
long int | 4 (32) | -2147483648 .. 2147483647 |
unsigned long int | 4 (32) | 0 .. 4294967295 |
signed long int | 4 (32) | -2147483648 .. 2147483647 |
float | 4 (32) | 3.4Π-38 .. 3.4Π+38 |
double | 4 (32) | 3.4Π-38 .. 3.4Π+38 |
long double | 10 (80) | 3.4Π-4932 .. 3.4Π+4932 |
[stextbox id=Β»warningΒ» caption=Β»ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Β»]Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΏΠ° double Π² AVR-GCC ΠΎΡΡΡΡΠΏΠ°Π΅Ρ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ°. ΠΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ double Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 64 Π±ΠΈΡΠ°. Π AVR-GCC ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 32 Π±ΠΈΡΠ°, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ½Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΡΠΈΠΏΠΎΠΌ float![/stextbox]
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠΎΠΌΡ, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ AVR-GCC Π²Π²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠ½ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ stdint.h. Π‘Π΄Π΅Π»Π°Π½ΠΎ ΡΡΠΎ, Π½Π°Π²Π΅ΡΠ½ΠΎ, Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡΠΈ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ (ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ :)). ΠΠΎΡ ΡΠ°Π±Π»ΠΈΡΠΊΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ:
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π² ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° AVR-GCC
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΡΠΈΠΏ | Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠΈΠΏ |
---|---|
int8_t | signed char |
uint8_t | unsigned char |
int16_t | signed int |
uint16_t | unsigned int |
int32_t | signed long int |
uint32_t | unsigned long int |
int64_t | signed long long int |
uint64_t | unsigned long long int |
Π’ΠΈΠΏ Void
Π ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ β ΡΠΈΠΏ void. Void ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ
ΠΎΠ΄ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠΎΡ ΡΠΈΠΏ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ½ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ.
5.3. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π°Β»
5.3. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ
Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π°Β»
ΠΠΏΠ΅ΡΠ°Π½Π΄Ρ ΠΈ
, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° — Β«ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
to Β», Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ
ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
:
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ
T
ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ
ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π’Β», ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΊΠ°ΠΊ
Β«Π’ *
Β».
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ
ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ
C ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ
ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
.
Π’ΠΈΠΏ Π’ | Π Π°Π·ΠΌΠ΅Ρ (Π±Π°ΠΉΡΡ) | Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° T | Π Π°Π·ΠΌΠ΅Ρ (Π±Π°ΠΉΡΡ) | ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ |
---|---|---|---|---|
Π²Π½ΡΡΡ | 4 | Π²Π½ΡΡΡ * | 4 | Π²Π½ΡΡΡ * a, * b, * c; |
ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° | 4 | ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° * | 4 | ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° * d, * e, * f; |
ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ | 2 | ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ * | 4 | ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ * g, * h, * i; |
unsigned short int | 2 | unsigned short int * | 4 | Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ int * j, * k, * l; |
Π΄Π»ΠΈΠ½Π½ΡΠΉ int | 4 | Π΄Π»ΠΈΠ½Π½ΡΠΉ int * | 4 | Π΄Π»ΠΈΠ½Π½ΡΠΉ int * m, * n, * o; |
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° | 4 | Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° * | 4 | Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° * p, * q, * r; |
ΡΠΈΠΌΠ². | 1 | ΡΠΈΠΌΠ². * | 4 | ΡΠΈΠΌΠ². * S, * t; |
ΡΠΈΠΌΠ²ΠΎΠ» Π±Π΅Π· Π·Π½Π°ΠΊΠ° | 1 | ΡΠΈΠΌΠ²ΠΎΠ» Π±Π΅Π· Π·Π½Π°ΠΊΠ° * | 4 | ΡΠΈΠΌΠ²ΠΎΠ» Π±Π΅Π· Π·Π½Π°ΠΊΠ° * u, * v; |
Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ | 4 | Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ * | 4 | Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ * w, * x; |
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ | 8 | Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ * | 4 | Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ * y, * z; |
Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ | 8 | Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ * | 4 | Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ * a1, * a2; |
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
, C
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° void *
.ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ
ΡΠ°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°.
Π Π°Π·ΠΌΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ
Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ Ρ
ΡΠ°Π½ΡΡ Π°Π΄ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ. Π ΡΠ»ΡΡΠ°Π΅
ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
, ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅Π΅.
ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΡΠΊΡΡΡΡ:
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ contact1
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΠΈ
Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 44 Π±Π°ΠΉΡΠ° (20 + 20 + 4), Π° contactPointer
ΠΈΠΌΠ΅Π΅Ρ
ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΈΠΏΠ° ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ 4 Π±Π°ΠΉΡΠ°.
5.3.1.ΠΠΎΠΏΡΠΎΡΡ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΎΡΠ΅Π½ΠΊΠΈ
ΠΈΠΌΡ | Π²ΡΡΠ°ΠΆΠ°Π΅Ρ | Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ * | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CHAR_BIT | Π§ΠΈΡΠ»ΠΎ Π±ΠΈΡΠΎΠ² Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ char (Π±Π°ΠΉΡ) | 8 ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * | ||||||||||||||||||
SCHAR_MIN | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» | -127 (-2 7 +1 ) ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ * | ||||||||||||||||||
SCHAR_MAX 9027 ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° | signed char | 127 ( 2 7 -1 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * | ||||||||||||||||||
UCHAR_MAX | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° unsigned char | 255 ( 2 8 -1 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * | ||||||||||||||||||
CHAR_MIN | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° char | Π»ΠΈΠ±ΠΎ SCHAR_MIN , Π»ΠΈΠ±ΠΎ 0 | ||||||||||||||||||
CHAR_MAX | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° char | Π»ΠΈΠ±ΠΎ SCHAR26_MAX , Π»ΠΈΠ±ΠΎ SCHAR26_MAX ΠΈΠ»ΠΈ 9027XUCHAR_MAX ΠΈΠ»ΠΈ UCHAR_MAX ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ² Π² ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Π΅ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ Π»ΠΎΠΊΠ°Π»ΠΈ | 1 ΠΈΠ»ΠΈ Π²ΡΡΠ΅ * | |||||||||||||||||
SHRT_MIN | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° short int | -32767 (-2 15 +1 ) ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ * | ||||||||||||||||||
SHRT_MAX | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° short int | 32767 ( 2 15 -1 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * | ||||||||||||||||||
USHRT_MAX | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° unsigned short int | 6553 5 ( 2 16 -1 ) ΠΈΠ»ΠΈ Π²ΡΡΠ΅ * | ||||||||||||||||||
INT_MIN | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° int | -32767 (-2 15 +1 ) ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ * | ||||||||||||||||||
INT_MAX | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° int | 32767 ( 2 15 -1 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * | ||||||||||||||||||
UINT_MAX1 | unsigned int | 65535 ( 2 16 -1 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * LONG_MIN | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° | long int | -2147483647 (-2 31 +1 ) ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ * LONG_MAX | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° | long int | 2147483647 ( 2 31 -1 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * ULONG_MAX | ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° | unsigned long int | 4294967295 (25 2 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * LLONG_MIN | ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° | long long int | -9223372036854775807 (-2 63 +1 ) ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ *940 LLONG_MAX ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ° | long long int | 9223372036854775807 ( 2 63 -1 ) ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ * ULLONG_47 | Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° | 1 ΡΠΈΠΏ | Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ int | 18446744073709551615 ( 2 64 -1 ) ΠΈΠ»ΠΈ Π²ΡΡΠ΅ * |
Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠΎΡΠΌΠ°ΡΠ° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠΎΡΠΌΠ°ΡΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΎΡΠΌΠ°ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π»ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π²ΠΎΠ΄, Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΎΡΠΌΠ°ΡΠ°. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠ°.
ΠΠΎΡ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠΎΡΠΌΠ°ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ — Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² C
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎΡΠΌΠ°ΡΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ |
---|---|---|
% c | Π‘ΠΈΠΌΠ²ΠΎΠ» | char unsigned char |
% d | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ | ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ int long |
% e or% E | ΠΠ°ΡΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ | float double |
% f | Floating point | float |
% g or% G | ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ% e or% E | float double |
% hi | Signed Integer (Short) | short |
% hu | Unsigned Integer ( Short) | unsigned short |
% i | Signed Integer | short unsigned short int long 9004 7 |
% l ΠΈΠ»ΠΈ% ld ΠΈΠ»ΠΈ% li | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ | long |
% lf | Floating point | double |
% Lf | Floating point | long double |
% lu | ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ | unsigned int unsigned long |
% lli,% lld | Signed Integer | long long |
% llu | Unsigned Integer | % unsigned long long |
ΠΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°. | short unsigned short int unsigned int long | |
% p | ΠΠ΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° void void * | void * |
% s | String | char * |
% u | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° | Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΠ»ΠΈΠ½Π½ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° |
% x ΠΈΠ»ΠΈ% X | Π¨Π΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π±Π΅Π· Π·Π½Π°ΠΊΠ° | short unsigned short int unsigned int long |
% nints | % nints Π½ΠΈΡΠ΅Π³ΠΎ | |
%% | ΠΠ΅ΡΠ°ΡΠ°Π΅Ρ% character |
Π ΠΠ°Π½ΠΊΠ°ΠΉ
ΠΠ°Π½ΠΊΠ°Π΄ΠΆ ΠΡΠ°ΠΊΠ°Ρ — ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΈ Π±Π»ΠΎΠ³Π΅Ρ Codeforwin. ΠΠ½ Π»ΡΠ±ΠΈΡ ΠΈΠ·ΡΡΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΠΈ ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
. ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Vasudhaika Software Sols. ΠΊΠ°ΠΊ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Codeforwin. ΠΠΎΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΠ°Π½ΠΊΠ°Π΄ΠΆ — Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π±Π»ΠΎΠ³Π³Π΅Ρ, ΡΡΠ΅Π½ΠΈΠΊ, Π»ΡΠ±ΠΈΡΠ΅Π»Ρ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΌΡΠ·ΡΠΊΠΈ.
ΠΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π°: Facebook | Twitter | Google | ΠΠ΅Π±-ΡΠ°ΠΉΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Pankaj
Π―Π·ΡΠΊ CompCert C
Π―Π·ΡΠΊ CompCert C
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π΄ΠΈΠ°Π»Π΅ΠΊΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C, ΠΊΠΎΡΠΎΡΡΠΉ
ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ CompCert C ΠΈ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ.ΠΠ½ ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΊΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΡ ISO C99 [5].
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ C99 Π½Π΅
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΎΠΎΠ±ΡΠ΅; Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. ΠΠ°
Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ C99, Π·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ·
ΡΡΠ°Π½Π΄Π°ΡΡ ISO C2011 [6].
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
CompCert C ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ C99. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊ
CompCert ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠ°ΠΊ
Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² C99.ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°
ΡΡΡΡΠΊΡΡΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° C99 [5]. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ,
Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ǥ5.1.2.2Β») ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π½ΠΎΠΌΠ΅ΡΠ°ΠΌ C99
ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.
Β§5 ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΡΡΠ΅Π΄Π°
- Β§5.1.2.2 Π Π°Π·ΠΌΠ΅ΡΠ΅Π½Π½Π°Ρ ΡΡΠ΅Π΄Π°.
- CompCert C ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ. Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ
ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ main. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ
ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
int main (void) {…}.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CompCert C ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ
ΡΠΎΡΠΌΠ° int main (int argc, char * argv []). - Β§5.2.1.2 ΠΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ.
- ΠΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ.
- Β§5.2.4.2 Π§ΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΏΡΠ΅Π΄Π΅Π»Ρ.
- Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ»Π΅Π΄ΡΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π΄Π²ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΌΠΎΠ΄Π΅Π»Ρ Β«ILP32LLΒ» ΠΈΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ Β«I32LP64Β»:Π¦Π΅Π»Π΅Π²Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π Π°Π·ΠΌΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ x86 64 Π±ΠΈΡΠ°, RISC-V 64 Π±ΠΈΡΠ° 64 Π±ΠΈΡΠ° (8 Π±Π°ΠΉΡ) I32LP64 ARM, PowerPC, x86 32 Π±ΠΈΡΠ°, RISC-V 32 Π±ΠΈΡΠ° 32 Π±ΠΈΡΠ° (4 Π±Π°ΠΉΡΠ°) ILP32LL Π§ΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π»:
Π’ΠΈΠΏ Π Π°Π·ΠΌΠ΅Ρ ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π±Π΅Π· Π·Π½Π°ΠΊΠ° 1 Π±Π°ΠΉΡ ΠΎΡ 0 Π΄ΠΎ 255 ΡΠΈΠΌΠ²ΠΎΠ» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ 1 Π±Π°ΠΉΡ β128 Π΄ΠΎ 127 ΡΠΈΠΌΠ²ΠΎΠ» 1 Π±Π°ΠΉΡ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Π½Π° x86 ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ» Π±Π΅Π· Π·Π½Π°ΠΊΠ° Π½Π° PowerPC, ARM ΠΈ RISC-V Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ 2 Π±Π°ΠΉΡΠ° ΠΎΡ 0 Π΄ΠΎ 65535 ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ 2 Π±Π°ΠΉΡΠ° β32768 Π΄ΠΎ 32767 ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ 2 Π±Π°ΠΉΡΠ° β32768 Π΄ΠΎ 32767 unsigned int 4 Π±Π°ΠΉΡΠ° 0 Π΄ΠΎ 2 32 β1 ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ int 4 Π±Π°ΠΉΡΠ° β2 31 Π΄ΠΎ 2 31 β1 int 4 Π±Π°ΠΉΡΠ° β2 31 t o 2 31 β1 Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ 4 Π±Π°ΠΉΡΠ° ΠΎΡ 0 Π΄ΠΎ 2 32 β1 Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ILP32LL 8 Π±Π°ΠΉΡΠΎΠ² ΠΎΡ 0 Π΄ΠΎ 2 64 β1 Π΄ΡΠΉΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ I32LP64 Π΄Π»ΠΈΠ½Π½Π°Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ 4 Π±Π°ΠΉΡΠ° β2 31 Π΄ΠΎ 2 31 β1 Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ILP32LL 8 Π±Π°ΠΉΡΠΎΠ² β2 63 Π΄ΠΎ 2 63 β1 Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ I32LP64 long 4 Π±Π°ΠΉΡΠ° β2 31 Π΄ΠΎ 2 31 β1 Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ILP32LL 8 Π±Π°ΠΉΡΠΎΠ² β2 63 Π΄ΠΎ 2 63 -1 Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ I32LP64 Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ 8 Π±Π°ΠΉΡΠΎΠ² 0 Π΄ΠΎ 2 64 -1 ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ 8 Π±Π°ΠΉΡΠΎΠ² -2 63 Π΄ΠΎ 2 63 — 1 long long 8 Π±Π°ΠΉΡΠΎΠ² β2 63 Π΄ΠΎ 2 63 β1 _Bool 1 Π±Π°ΠΉΡ 0 ΠΈΠ»ΠΈ 1 Π’ΠΈΠΏΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ IEEE 754-2008 [12]:
Π’ΠΈΠΏ ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π Π°Π·ΠΌΠ΅Ρ ΠΠ°Π½ΡΠΈΡΡΠ° ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ IEEE 754 ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ 4 Π±Π°ΠΉΡΠ° 23 Π±ΠΈΡΠ° β126 Π΄ΠΎ 127 Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ IEEE 754 Ρ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ 8 Π±Π°ΠΉΡΠΎΠ² 52 Π±ΠΈΡΠ° β1022 Π΄ΠΎ 1023 (Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ64) 900 long double ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ; Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ -flongdouble,
ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°Ρ, ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏΠΎΠΌ, Π±Π΅Π· Π»ΠΈΡΠ½Π΅ΠΉ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ
ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ.ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ FLT_EVAL_METHOD, ΡΠ°Π²Π½ΠΎΠΌΡ 0.
Β§6 Π―Π·ΡΠΊ
- Β§6.2 ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ
- Β§6.2.5 Π’ΠΈΠΏΡ
- CompCert C ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΠΈΠΏΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² C99, Ρ
ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:- Π’ΠΈΠΏ long double ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ. ΠΡΠ»ΠΈ
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠΎΠΏΡΠΈΡ -flongdouble, ΠΎΠ½Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ double. - Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ (double _Complex ΠΈ Ρ. Π.) ΠΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ.
- Π’ΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΡΠΈΠΏΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ
Π±ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΈΠ»ΠΈ ΡΠΈΠΏΠΎΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ -fstruct-pass
Π°ΠΊΡΠΈΠ²Π΅Π½ (ΡΠ°Π·Π΄Π΅Π» 3.2.9). - ΠΠ°ΡΡΠΈΠ²Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ. Π Π°Π·ΠΌΠ΅Ρ N
Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ²Π° T [N] Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
- Π’ΠΈΠΏ long double ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ. ΠΡΠ»ΠΈ
- Β§6.2.6 ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
Π¦Π΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡΡ .
- Β§6.3 ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Π²ΡΠ΅Π³Π΄Π°
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ 2 N Π΄ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°
Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ N-Π±ΠΈΡΠ½ΡΠΌ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ.ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΏ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² Π»ΡΠ±ΠΎΠΉ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°
ΠΈ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ: ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½
ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. Π’ΠΈΠΏΡ intptr_t ΠΈ uintptr_t ΠΈΠ·
— ΡΡΠΎ ΡΠ΅Π»ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ
Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ, ΡΡΠΎ ΠΈ Π²ΡΠ΅ ΡΠΈΠΏΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ Π² ΠΏΠ»Π°Π²Π°ΡΡΠ΅Π΅ ΠΎΠΊΡΡΠ³Π»ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.
Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎΠ³ΠΎ Ρ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ.ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² ΡΠΈΠΏΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΎΠΊΡΡΠ³Π»ΡΡΡΡΡ Π΄ΠΎ
Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ. - Β§6.4 ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
- Β§6.4.1 ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°.
- Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°:
_Alignas _Alignof __attribute__ __attribute __const __const__ __inline __inline__ __restrict __restrict__ __packed__ asm __asm ββ__asm__ _Noreturn _Static_assert
- Β§6.
4.2 ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ
- ΠΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π·Π½Π°ΡΠΈΠΌΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π΅ΡΡΡ Π»ΠΈ Ρ Π½Π΅Π³ΠΎ
Π²Π½Π΅ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π Π΅Π³ΠΈΡΡΡ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°ΠΆΠ΅ Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°Ρ Ρ
Π²Π½Π΅ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ. Π ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°Ρ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«$Β» (Π΄ΠΎΠ»Π»Π°Ρ). - Β§6.4.3 ΠΠΌΠ΅Π½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
- Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°Ρ
ΠΈ
ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ. ΠΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°Ρ .
- Β§6.5 ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
CompCert C ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² C99, Ρ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅., ~, <<, >>) Π½Π°Π΄ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ
ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄ΠΎ Π΄Π²ΡΡ .ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΎΠΊΡΡΠ³Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ
ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ, ΡΠ°Π·ΡΡΠ²Π°Ρ ΡΠ²ΡΠ·ΠΈ ΠΏΡΡΠ΅ΠΌ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ Π΄ΠΎ
Π΄Π°ΠΆΠ΅ ΠΌΠ°Π½ΡΠΈΡΡΠ°. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ,
ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Ρ ΡΠ»Π°Π³ΠΎΠΌ -ffloat-const-prop 0
(ΡΠ°Π·Π΄Π΅Π» 3.2.3). Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ
ΠΎΡΠ΅Π½ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ
ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ.ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ
Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ float (Ρ.Π΅. Π²ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΠ»ΠΈ
ΡΠΈΠΏΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ) ΠΈ Ρ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠΎΡΠ½ΠΎΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ double
(Ρ.Π΅. ΠΎΠ΄ΠΈΠ½ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ double). ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ
FLT_EVAL_METHOD ΡΠ°Π²Π½ΠΎ 0.Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ, Ρ ΡΠ°Π½ΡΡΠ΅Π΅ΡΡ Π² (ΡΠ°ΡΡΠΈ) ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΌΠΎΠΆΠ΅Ρ
Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ lvalue, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈΠ»ΠΈ ΡΠΈΠΏ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ. Π
ΡΡΡΠ΅ΠΊΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Ρ ΡΡΠ΅ΡΠΎΠΌ Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎ Π΄Π²ΡΡ Π΄Π»Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π», IEEE 754
Π΄Π»Ρ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ) ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ (ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² Π΄Π»Ρ
PowerPC, ΠΏΡΡΠΌΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ² Π΄Π»Ρ x86 ΠΈ RISC-V, ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡΠΎΠ², Π·Π°Π²ΠΈΡΡΡΠΈΠΉ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
Π΄Π»Ρ ARM).ΠΠ°ΠΏΡΠΎΡΠΈΠ², Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Ρ ΡΠ°Π½ΡΡΠ΅Π΅ΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ
Π΄ΠΎΡΡΡΠΏ ΠΊ lvalue, ΠΈΠΌΠ΅ΡΡΠ΅ΠΌΡ ΡΠΈΠΏ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ Ρ
ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΡΡΠΎ ΠΈ ΡΠΈΠΏ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ intptr_t ΠΈ uintptr_t.
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ
ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈ ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ CompCert C,
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ
ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Ρ Π»ΡΠ±ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΠ»ΠΎΠ²Π° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.- Β§6.5.2 ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Postfix
- ΠΡΠ»ΠΈ ΠΊ ΡΠ»Π΅Π½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ
Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΡΠ»Π΅Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ
ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ Π°Π±Π·Π°ΡΠ΅ Π²ΡΡΠ΅: ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°
Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π΅ Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΡΠΈΠΏ, ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ
ΠΊΠ°ΠΊ ΡΠΈΠΏ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡΡΠΎΡΠ· u {Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ d; Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ int Ρ [2]; Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» c [8]; };
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΡΠ»Π΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ»Π΅Π½Π°.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌΡΠΎΡΠ· u {char * ptr; Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» c [4]; };
ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ»Π΅Π½Π΅ ptr, Π΄ΠΎΡΡΡΠΏ ΠΊ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ»Π΅Π½Π° c Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ. - Β§6.5.3 Π£Π½Π°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
- Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ sizeof CompCert C ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ _Alignof ΠΈΠ· C2011, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ
__alignof__ ΠΊΠ°ΠΊ Π² GNU C.ΠΡΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΠΈΠΏΡ, Π½ΠΎ Π½Π΅
ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ ΡΡΠΎΠ³ΠΎ
ΡΠΈΠΏ.Π’ΠΈΠΏ size_t ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° sizeof ΠΈ _Alignof ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Π±ΡΡΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ Π΄Π»ΠΈΠ½Π½ΡΠΌ. - Β§6.5.4 ΠΡΠ»ΠΈΠ²ΠΊΠΈ
- Π‘ΠΌ. ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΏΡΠ½ΠΊΡΡ Β§6.3 (Β«ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΒ») Π²ΡΡΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ
ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ. - Β§6.5.5 ΠΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
- ΠΠ΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π΅ΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ°Π²Π΅Π½
Π½ΡΠ»Ρ. ΠΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΡΠ°ΡΠΎΠΊ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅
Π°ΡΠ³ΡΠΌΠ΅Π½Ρ — Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ (β2 31
Π΄Π»Ρ ΡΠΈΠΏΠ° int), Π° Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ — -1 (Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ
ΡΠ»ΡΡΠ°ΠΉ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅Π»Π΅Π½ΠΈΡ). - Β§6.
5.6 ΠΠ΄Π΄ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈΠ»ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈΠ·
ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ
Π²Π½Π΅ Π³ΡΠ°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π‘ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π°ΠΉΡΠ° Ρ
ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π°Π·Ρ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ
2 32 ΠΈΠ»ΠΈ 2 64 (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π°
ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ). Π’Π°ΠΊΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ Π³ΡΠ°Π½ΠΈΡ Π²ΡΠ·ΡΠ²Π°ΡΡ undefined
ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ. - Β§6.5.7 ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π°
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡΠ°Π²ΠΎ >> ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅Π»ΠΎΠΌΡ ΡΠΈΡΠ»Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ
Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΄Π²ΠΈΠ³ Π² Π±ΠΈΡΠ°Ρ Β«1Β» ΡΠ»Π΅Π²Π°. - Β§6.5.8 ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ
- Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ±Π°
ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² Π³ΡΠ°Π½ΠΈΡΡ Π±Π°Π·ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ
Β«ΠΠ΄ΠΈΠ½ Π·Π° ΠΊΠΎΠ½ΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Β», Π° Π΄ΡΡΠ³ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½
ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π³ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Β«ΠΎΠ΄ΠΈΠ½ Π·Π°Β» ΠΊΠΎΠ½ΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ
ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. - Β§6.5.9 ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°
- Π’ΠΎ ΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈ Π² Β§6.5.8 ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
- Β§6.6 ΠΠΎΡΡΠΎΡΠ½Π½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
- ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΠΎΡ C99.
- Β§6.7 ΠΠ°ΡΠ²Π»Π΅Π½ΠΈΡ
- CompCert C ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² C99, Ρ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅.- Β§6.7.2 Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΈΠΏΠ°
- Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ (ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ _Complex) Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ.
- Β§6.7.2.1 Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
- ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ Π² ΡΡΡΡΠΊΡΡΡΠ°Ρ
ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡ
Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π·
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π° ΠΎΠΏΡΠΈΡ -fbitfields
Π²ΡΠ±ΡΠ°Π½ΠΎ (ΡΠ°Π·Π΄Π΅Π» 3.2.9).ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ Β«ΠΏΡΠΎΡΡΠΎΠ³ΠΎΒ» ΡΠΈΠΏΠ° int ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠ΅. Π
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ELF, Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ
Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² PowerPC ΠΏΠ΅ΡΠ²ΡΠΌΠΈ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΡΡΠ°ΡΡΠΈΠ΅ Π±ΠΈΡΡ.
ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΈ ΡΠ½Π°ΡΠ°Π»Π° ΠΌΠ»Π°Π΄ΡΠΈΠ΅ Π±ΠΈΡΡ Π½Π° ARM ΠΈ x86
ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ.ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ enum e x: 2. Π’Π°ΠΊΠΎΠΉ Π±ΠΈΡ
ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΡΠΎΡΠ½ΠΎ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ Π±ΠΈΡ, ΠΈ
ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎ ΠΈΠ½Π°ΡΠ΅.Π§Π»Π΅Π½Ρ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ
ΠΏΠΎΡΡΠ΄ΠΎΠΊ, Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π±Π°ΠΉΡΠΎΠ² Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ
ΡΠ»Π΅Π½ Π²ΡΡΠΎΠ²Π½Π΅Π½ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅
ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ _Alignas.Π Π°Π·Π½ΡΠ΅
ΠΌΠ°ΠΊΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ, Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΠΎΠΏΡΠΈΡ -fpacked-Structs
(ΡΠ°Π·Π΄Π΅Π» 3.2.9) ΠΈ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ (ΡΠ°Π·Π΄Π΅Π» 6.2)
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π² C2011.
(ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΌ. Π ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ C2011, Β§6.7.2.1, ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ 13.) - Β§6.7.2.2 ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ
- ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ int.
- Β§6.7.3 ΠΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΈΠΏΠ°
- Π£ΡΠΈΡΡΠ²Π°ΡΡΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ const ΠΈ volatile, Π°
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ΅ Π΄Π»Ρ Π»Π΅ΡΡΡΠΈΡ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠΈΠΏΠΎΠ².ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅
ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ, Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ.ΠΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠΌΡΡ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ
ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΠΏΠ°ΡΠ°Π³ΡΠ°ΡΠ΅ 6 ΡΠ°Π·Π΄Π΅Π»Π° 6.7.3: ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
ΠΈ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ CompCert C ΠΊΠ°ΠΊ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅.
ΡΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CompCert. ΠΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ
ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΡΠΈΠΏ (ΡΠΈΠΏ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ) ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ
ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΉ, ΡΠ½Π΅ΡΠ³ΠΎΠ½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ Π΄ΠΎΡΡΡΠΏ: Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΈ
Π΄ΠΎΡΡΡΠΏ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡ.ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CompCert Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²
ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ.Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ISO C2011 CompCert ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ _Alignas
ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ ΡΠ»Π΅Π½ΠΎΠ².
ΠΡΠΎΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π±ΡΠ²Π°Π΅Ρ Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ²:
_Alignas (N), Π³Π΄Π΅ N — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠ΅ΡΡΠ΅Π΅ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π΄Π²ΠΎΠΉΠΊΠΈ; ΠΈ _Alignas (T),
Π³Π΄Π΅ T — ΡΠΈΠΏ.ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠΎΡΠΌΠ° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π°
_Alignas (_Alignof (T)).ΠΡΡΠ΅ΠΊΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° _Alignas (N) Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ
Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π° N.Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ°
ΠΏΡΠΈΠΌΠ΅Ρ:struct s {char c; int _Alignas (8) Ρ; };
ΠΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Alignas (8) ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ i Ρ 4
(Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° int) Π΄ΠΎ 8. ΠΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ 7 Π±Π°ΠΉΡΠΎΠ² Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΡΠ°Π²Π»Π΅Π½ ΠΌΠ΅ΠΆΠ΄Ρ c ΠΈ i Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΡ 3 Π±Π°ΠΉΡΠΎΠ².
ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Ρ 8 Π΄ΠΎ 12, Π° ΡΠ°Π·ΠΌΠ΅Ρ
Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ ΠΎΡ 4 Π΄ΠΎ 8.ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ N, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ΅ _Alignas (N), Π΄ΠΎΠ»ΠΆΠ½ΠΎ
ΠΎΠ±ΡΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ
ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ.ΠΠ»Ρ ΡΠ΅Π»Π΅Π²ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΡ Π½Π΅Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ
Π΄ΠΎΡΡΡΠΏΠΎΠ² (x86, PowerPC ΠΈ RISC-V, Π½ΠΎ Π½Π΅ ARM), N ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ
Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅.ΠΠ°ΠΊΠΎΠ½Π΅Ρ, CompCert C ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠΈΠ»Ρ GCC.
Π°ΡΡΠΈΠ±ΡΡΡ (ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ __attribute), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΈΠΏΠ°.
Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» 6.2. - Β§6.7.4 Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π΄Π²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΉ: Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΈΠ· ISO C99 ΠΈ
_Noreturn ΠΈΠ· ISO C2011. - Β§6.7.5.2 ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΎΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
- ΠΠ°ΡΡΠΈΠ²Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ.ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΌΠ°ΡΡΠΈΠ²
Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΎΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ISO C90, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ [] Π΄Π»Ρ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
type ΠΈ [N], Π³Π΄Π΅ N — Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΠ²Π°. - Β§6.7.5.3 ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
- Π’ΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ.
type, Π΅ΡΠ»ΠΈ Π½Π΅ Π°ΠΊΡΠΈΠ²Π½Π° ΠΎΠΏΡΠΈΡ -fstruct-return (ΡΠ°Π·Π΄Π΅Π» 3.2.9). - Β§6.7.8 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ (ISO C90), ΡΠ°ΠΊ ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ,
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ISO C99. - Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ
- CompCert ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° _Static_assert.
ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ C2011, Β§6.7.10.
- Β§6.8 ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ Π±Π»ΠΎΠΊΠΈ
- ΠΡΠ΅ ΡΠΎΡΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² C99, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π² CompCert C,
Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½ΠΈΠΆΠ΅.ΠΠΏΠ΅ΡΠ°ΡΠΎΡ asm (ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ) Π½Π΅
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π° ΠΎΠΏΡΠΈΡ -finline-asm
Π½Π°Π±ΠΎΡ. Π‘ΠΌ. Π Π°Π·Π΄Π΅Π» 6.6 Π΄Π»Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ
ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° asm-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ².- Β§6.8.4.2 ΠΠΏΠ΅ΡΠ°ΡΠΎΡ switch
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡ switch Π² CompCert C ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½
Β«Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°ΡΒ» ΡΠΎΡΠΌΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π½Π° Java ΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½Π°Ρ Misra-C. Π ΠΈΠΌΠ΅Π½Π½ΠΎ,
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ switch Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΠΎΡΠΌΡ:switch (Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) { case expr1: ... case expr2: ... ... Π΄Π΅ΡΠΎΠ»Ρ: ... }
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠ΅Π³ΠΈΡΡΡ ΠΈ ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ
ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π½Π° Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΡΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΠ° ΠΏΠΎΡΠ»Π΅
Π²ΡΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ. ΠΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π±Π»ΠΎΠΊΠ°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ.
ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠ°ΠΊ if, while ΠΈΠ»ΠΈ for.Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ,
ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ°Π»ΡΠ½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΠ°ΡΡΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ.ΠΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Java ΠΈ Misra-C, Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΡΠ»ΡΡΠ°Π΅Π², Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ.
- Β§6.9 ΠΠ½Π΅ΡΠ½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅. Π
ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°ΠΌΠΈ, Π½ΠΎ
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΈΡ Π² ΡΠΎΡΠΌΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, T f () {…} Π΅ΡΡΡ
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅ΡΡΡ Π² T f (void) {…}.Π€ΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΎ
ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΡΠΈΠ΅ … Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ.Π’ΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ.
type, Π΅ΡΠ»ΠΈ Π½Π΅ Π°ΠΊΡΠΈΠ²Π½Π° ΠΎΠΏΡΠΈΡ -fstruct-return (ΡΠ°Π·Π΄Π΅Π» 3.2.9). - Β§6.10 ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
- ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CompCert C Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ, Π°
Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ ΡΡΡ Π·Π°Π΄Π°ΡΡ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ C, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
GCC. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ
ΡΡΠ°Π½Π΄Π°ΡΡ C99.
Β§7 ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CompCert C Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° C. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π°
ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
. CompCert
ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ GNU glibc
ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ:
- Β§7.6 Π‘ΡΠ΅Π΄Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ
- Π€ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° ΠΈ ΡΡΠ°ΠΏΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ CompCert ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ
ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ΅ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.ΠΡΠ»ΠΈ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΆΠΈΠΌΡ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ fesetround
ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π° Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ -ffloat-const-prop ΠΎΡ 0 Π΄ΠΎ
ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ. - Β§7.12 ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°
- ΠΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ
Π²ΠΊΠ»ΡΡΠ°ΡΡ Π΄Π»ΠΈΠ½Π½ΡΠ΅ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ
ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ CompCert.
ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ABI-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠΈΠΏΠ° long double. - Β§7.13 ΠΠ΅Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΠ°ΡΠΊΠΈ
- ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CompCert C Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π·Π½Π°Π½ΠΈΠΉ ΠΎ setjmp ΠΈ
longjmp, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π°ΠΆΠ°ΡΡ
ΠΏΠΎΡΠΎΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π² ΠΊΠΎΠ΄Π΅, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ CompCert. Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎ
Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠ·ΠΎΠ²Π°
setjmp ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ volatile.
ΠΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π² C?
ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² C:
bool b = 1234567890> 09876;
ΠΠ°ΠΊΠΎΠ²Ρ ΡΠΈΠΏΡ ΡΡΠΈΡ
ΠΊΠΎΠ½ΡΡΠ°Π½Ρ? ΠΠΎΠΌΠ΅Ρ 1234567890
— ΠΊΠ°ΠΊΠΎΠΉ Ρ Π½Π΅Π³ΠΎ ΡΠΈΠΏ? ΠΠ°ΠΊ ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ C ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ? Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C Π³ΠΎΠ²ΠΎΡΠΈΡ:
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π²ΡΠΎΠ΄Π΅
1234
— ΡΡΠΎint
.ΠΠΎΠ½ΡΡΠ°Π½ΡΠ°long
Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°l
(ell) ΠΈΠ»ΠΈ
L
, ΠΊΠ°ΠΊ123456789L
; ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠ°Ρ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²int
, ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΡΡΠ° ΠΊΠ°ΠΊlong
.
ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°u
ΠΈΠ»ΠΈU
, Π° ΡΡΡΡΠΈΠΊΡul
ΠΈΠ»ΠΈUL
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ
Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅
.
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΎΡΠΊΡ (
123.4
) ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ (1e-2
) ΠΈΠ»ΠΈ ΠΎΠ±Π°; ΠΈΡ
ΡΠΈΠΏ —Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ ΡΡΡΡΠΈΠΊΡ. Π‘ΡΡΡΠΈΠΊΡΡf
ΠΈΠ»ΠΈF
ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡΡ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ
;Π»
ΠΈΠ»ΠΈΠ»
ΡΠΊΠ°Π·Π°ΡΡ
Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ.
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²:
0 // int
0l // Π΄Π»ΠΈΠ½Π½ΡΠΉ
1234 // ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»
1234L // Π΄Π»ΠΈΠ½Π½ΡΠΉ
0ul // Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅
0u // Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅
2147483647 // int (ΠΏΡΠΎΡΡΠΎ)
2147483648 // Π΄Π»ΠΈΠ½Π½ΡΠΉ
2147483647u // Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅
2147483648u // Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ (Π½ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΡΠΌΠ΅ΡΡΠΈΡΡΡΡ Π² Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅)
0x0101010101010101ULL // unsigned long long
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΠ» ΠΠΈΠ΄ΡΠΈΠΎ,
Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ macOS ΠΈ Windows, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π° Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π³ΠΎΠ»ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ.Vidrio ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π²ΠΈΠ΄Π΅ΠΎ Ρ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅ΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΠΊΠ°ΠΊ Π² Π·Π΅ΡΠΊΠ°Π»Π΅.
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»ΠΈΡΠ΅ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Zoom, QuickTime ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Vidrio Π΄Π΅Π»Π°Π΅Ρ Π²Π°ΡΠΈ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Ρ Π²Π°ΡΠΈ ΠΆΠ΅ΡΡΡ, Π²Π·Π³Π»ΡΠ΄Ρ ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
β1 Π½Π° Product Hunt.
ΠΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π»Ρ macOS ΠΈ Windows.
ΠΡΠ΅ ΠΎΡ Jim
ΠΠΎΠΌΠ΅ΡΠ΅Π½ΠΎ.
ΠΠ²ΡΠΎΡΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²Π° Π½Π° Π²ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΠΆΠ΅ΠΉΠΌΡΡ Π€ΠΈΡΠ΅ΡΡ, 2017 Π³.
ΠΡΠΎΡ ΠΏΠΎΡΡ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΌΠΎΠΈΠΌ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»Π΅ΠΌ.ΠΠ°ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΡ? ΠΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ.
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌΠΈ (ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ 10), ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΌΠΈ (ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ 16), Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ (ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ 2) ΠΈΠ»ΠΈ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΠΌΠΈ (ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ 8). Π ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΡ ΡΡΡΡΠΈΠΊΡΠΎΠ² ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ»ΠΈΠ½Π½ΡΠ΅ ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΡΡΡΠΈΠΊΡΡ
Π‘ΡΡΡΠΈΠΊΡ L
(ΠΈΠ»ΠΈ l
), ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌΡΠΉ Π»ΡΠ±ΡΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌ ΡΠΈΠ»Π°ΠΌ, ΡΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ββΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½ΠΎΠΉ
.Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΡΡΠΈΠΊΡ U
(ΠΈΠ»ΠΈ u
) Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π±ΡΡΡ Π±Π΅Π· Π·Π½Π°ΠΊΠ°
.
Π‘ΡΡΡΠΈΠΊΡΡ L
ΠΈ U
ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅: ul
, Lu
, UL
ΠΈ Ρ. Π.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡΡΡΠΈΠΊΡΡ ULL
(ΠΈΠ»ΠΈ ull
) ΠΈ LL
(ΠΈΠ»ΠΈ ll
), ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ unsigned long long
ΠΈΠ»ΠΈ long long
.
ΠΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΡΡΡΡΠΈΠΊΡΠ° ( U
, u
, L
, l
, LL
, ll
, ULL
ΠΈΠ»ΠΈ ull
),
ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Β«Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉΒ» ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: short
, unsigned short
, int
, unsigned int
, long int
, unsigned long int
, long long
ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ
.
Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅:
- ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΈΠΊΡ
U
, Π΅Π΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:unsigned short
,unsigned int
,unsigned long int
. - ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΈΠΊΡ
L
, Π΅Π΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΈΡΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:long int
,unsigned long int
. - ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΡΠΈΠΊΡΡ
L
ΠΈU
(LU
ΠΈΠ»ΠΈUL
), Π΅Π΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρunsigned long int
. - ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ
LL
, Π΅Π΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρlong long
. - ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΠΈΠΌΠ΅Π΅Ρ
ULL
, Π΅Π΅ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅ΡΠ±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ
.
Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ
ΠΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΎΡ -9223372036854775808 Π΄ΠΎ 18446744073709551615. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΠΈΠ΅ ΡΡΠΈ Π³ΡΠ°Π½ΠΈΡΡ, ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ Β«ΠΠ½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Β». ΠΠ΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π½ΠΎΠ»Ρ. Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ Π½ΡΠ»Π΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ,
int i = 10; / * Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ 10 * / int i = 010; / * Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ 8 * / int i = 0; / * Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ 0 = Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΠΉ 0 * /
Π ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΡ ΡΡΡΡΠΈΠΊΡΠΎΠ² ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ΅ | ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡΠΉ ΡΠΈΠΏ |
---|---|
<-9223372036854775808 | ΠΡΠΈΠ±ΠΊΠ°: Π²Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°! |
-9223372036854775808 — -2147483649 | Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ |
-2147483648 — -32769 | Π΄Π»ΠΈΠ½Π½ΡΠΉ |
-32768 — -129 | Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ |
-128-127 | ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ |
128β255 | ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° |
256-32767 | Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ |
32768-65535 | ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° |
65536-2147483647 | Π΄Π»ΠΈΠ½Π½ΡΠΉ |
2147483648-4294967295 | Π΄Π»ΠΈΠ½Π½ΡΠΉ Π±Π΅Π· Π·Π½Π°ΠΊΠ° |
4294967296-18446744073709551615 | Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ |
> 18446744073709551615 | ΠΡΠΈΠ±ΠΊΠ°: Π²Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°! |
Π¨Π΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ
ΠΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ 0x
(ΠΈΠ»ΠΈ 0X
), ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΌΠΈ.Π ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΡ
ΡΡΡΡΠΈΠΊΡΠΎΠ² ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΌ ΠΎΡ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π²ΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, 0xC367
Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ unsigned int
.
Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ
ΠΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ 0b
(ΠΈΠ»ΠΈ 0B
), ΡΡΠΈΡΠ°ΡΡΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ. Π ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΡ
ΡΡΡΡΠΈΠΊΡΠΎΠ² ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ· Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π²ΡΡΠ΅.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, 0b11101
Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅
.
Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΠΉ
ΠΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ Π½ΡΠ»Π΅ΠΌ ΡΡΠΈΡΠ°ΡΡΡΡ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΡΠΌΠΈ. ΠΡΠ»ΠΈ Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΡΠΈΡΡΡ 8 ΠΈΠ»ΠΈ 9, Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅. Π ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠ΅ΡΠ°ΡΡΠΈΡ
ΡΡΡΡΠΈΠΊΡΠΎΠ² ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ· Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π²ΡΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, 0777
Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ int
.
Copyright (c) 2002-2012 ΠΌΠΈΠΊΡΠΎΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠ°.ΠΡΠ΅ ΠΏΡΠ°Π²Π° Π·Π°ΡΠΈΡΠ΅Π½Ρ.
Π§ΡΠΎ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎΠ± ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅? ΠΡΠΏΡΠ°Π²ΡΡΠ΅ Π½Π°ΠΌ ΠΎΡΠ·ΡΠ²!
Π₯ΠΎΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ?
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΈΡ
Π½Π°
Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² C ++: ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠ΅, Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠ΅, Π΄Π»ΠΈΠ½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ — Chew Code
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΠ·ΡΠΊΠ΅ C ++, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±ΠΎΠ»ΡΡΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ Π² C ++:
- Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ
- Π±Π΅Π· Π·Π½Π°ΠΊΠ°
- Π΄Π»ΠΈΠ½Π½ΡΠΉ
- ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ
Π‘Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΡΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ².
- ΠΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Β«ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉΒ» ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅, ΡΠ°ΠΊ ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: signed int num = -3;
- ΠΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Β«Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉΒ» ΠΏΠ΅ΡΠ΅Π΄ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: unsigned int a = 5;
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Ρ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° int a = -10; Π² Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .
- ΠΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ char ΠΈ int. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ long ΠΊ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΎΠΉ.
- Β«Π±Π΅Π· Π·Π½Π°ΠΊΠ°Β» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°.
- Β«Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉΒ» ΡΠ΄Π²Π°ΠΈΠ²Π°Π΅Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΠΈΡΠ΅Π», ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ int ΠΈΠ»ΠΈ char.
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ββΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ , ΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°Ρ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ .
1. Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Β«shortΒ», Β«longΒ» ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Β«intΒ».
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: short int a = 3; Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ int b = 62220;
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ short a = 3; ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ b = 62220;
Π’ΠΠΠΠΠ¦Π 1: ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ
[su_table]
Π’ΠΈΠΏ | Π Π°Π·ΠΌΠ΅Ρ | ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ |
ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ | 2 Π±Π°ΠΉΡΠ° | -32768 Π΄ΠΎ 32767 |
ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° | 2 Π±Π°ΠΉΡΠ° | 0 Π΄ΠΎ 65535 |
ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ | 2 Π±Π°ΠΉΡΠ° | -32768 Π΄ΠΎ 32767 |
[/ su_table]
Π’ΠΠΠΠΠ¦Π 2: int
int ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ 2 ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
[su_table]
Π’ΠΈΠΏ | Π Π°Π·ΠΌΠ΅Ρ | ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ |
Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ | 2 ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡΠ° | -32768 Π΄ΠΎ 32767 (2 Π±Π°ΠΉΡΠ°) -2 147 483 648 Π΄ΠΎ 2 147 483 647 (4 Π±Π°ΠΉΡΠ°) |
ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ° | 2 ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡΠ° | ΠΎΡ 0 Π΄ΠΎ 65 535 (2 Π±Π°ΠΉΡΠ°) ΠΎΡ 0 Π΄ΠΎ 4 294 967 295 (4 Π±Π°ΠΉΡΠ°) |
ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΎ int | 2 ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡΠ° | -32768 Π΄ΠΎ 32767 (2 Π±Π°ΠΉΡΠ°) -2 147 483 648 Π΄ΠΎ 2 147 483 647 (4 Π±Π°ΠΉΡΠ°) |
[/ su_table]
Π’ΠΠΠΠΠ¦Π 3: Π΄Π»ΠΈΠ½Π½ΡΠΉ
[su_table]
Π’ΠΈΠΏ | Π Π°Π·ΠΌΠ΅Ρ | ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ |
Π΄Π»ΠΈΠ½Π½ΡΠΉ | 4 Π±Π°ΠΉΡΠ° | -2 147 483 648 Π΄ΠΎ 2 147 483 647 |
Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° | 4 Π±Π°ΠΉΡΠ° | 0 Π΄ΠΎ 4 294 967 295 |
ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π΄Π»ΠΈΠ½Π½ΡΠΉ | 4 Π±Π°ΠΉΡΠ° | -2 147 483 648 Π΄ΠΎ 2 147 483 647 |
[/ su_table]