ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² си: Π‘ | ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

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

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² Π‘++ (Π²ΠΈΠ΄Π΅ΠΎ)

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² Π‘++ достаточно дрСвняя, ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π½Π΅Π΅ классичСская опСрация. Если Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ ΠΈ ΠΏΠΎ-русски: ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° – это ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π±Π°ΠΉΡ‚ΠΎΠ² Ρ†Π΅Π»Ρ‹ΠΌ ΠΈΠ»ΠΈ вСщСствСнным. Или ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ класс.

Π’ΠΎΠΎΠ±Ρ‰Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈ структуру ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° нСсколько: ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ INT, int,Β  Π΄ΠΎΠ»Π³ΠΎ INT, Π½Π΅ считая Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹Π΅. И ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ для Π½ΠΈΡ… Ρ€Π°Π·Π½ΠΎΠ΅ количСство ячССк памяти (Π±Π°ΠΉΡ‚): 1, 2 ΠΈ 4 соотвСтствСнно. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса называСтся стандартным ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Β Π²:

int a = 1; short int b = 2; b = a;

int a = 1;

short int b = 2;

b = a;

Π‘Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ Π΄Π²Π° ΠΌΠ»Π°Π΄ΡˆΠΈΡ… Π±Π°ΠΉΡ‚Π° ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«Π°Β», ΠΈ просто пСрСсадит ΠΈΡ… Π² Π΄Π²Π° Π±Π°ΠΉΡ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Β«bΒ». ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Π° (Π΅Π΄ΠΈΠ½ΠΈΡ†Π°) Π²ΠΏΠΎΠ»Π½Π΅ сСбС помСщаСтся Π² эти Π΄Π²Π° Π±Π°ΠΉΡ‚Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° даст ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π° Π‘++ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ прСобразования.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ?

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ссли ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«Π°Β» число 123456789? Оно прСкрасно умСстится Π² 4 Π±Π°ΠΉΡ‚Π° Ρ‚ΠΈΠΏΠ° int, Π½ΠΎ Π² 2 Π±Π°ΠΉΡ‚Π° Ρ‚ΠΈΠΏΠ° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ INT ΠΎΠ½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚. Блишком большоС. Π‘ , ΠΊΠ°ΠΊ ΠΈ полагаСтся, просто ΠΎΠ±Ρ€Π΅ΠΆΠ΅Ρ‚ это Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ число, взяв ΠΈΠ· Π½Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ хвост, ΠΈ помСстит Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Β«bΒ». ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ СстСствСнно Π΅Ρ€ΡƒΠ½Π΄Ρƒ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ с минусом, Ссли вывСсти Π΅Π΅ Π½Π° экран. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, которая Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большСС количСство Π±Π°ΠΉΡ‚ Π² памяти Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ. Если ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ ΠΈΠ· short Π² long ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ большС, ΠΈ мСста для Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚

short Π²ΠΏΠΎΠ»Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚.

Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ. ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΠΈ Ρ‡Π°ΡΡ‚Π΅Π½ΡŒΠΊΠΎ ловят студСнтов Π½Π° Ρ‚Π°ΠΊΠΎΠΌ фокусС, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ давая Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡ΠΊΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹ΠΉ камСнь с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ»ΠΎΡ…ΠΎ совмСстимыми Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ.

Π§Ρ‚ΠΎ касаСтся прСобразования Ρ‚ΠΈΠΏΠΎΠ² вСщСствСнного, этим занимаСтся матСматичСский сопроцСссор. Π’ΡƒΡ‚ ΡƒΠΆΠ΅ Π½Π΅ просто Π±Π°ΠΉΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π³ΠΎΠ½ΡΡŽΡ‚ΡΡ ΠΈΠ· ячССк Π² ячСйку, Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ†Π΅Π»ΠΎΠ΅ Π² Ρ‚ΠΈΠΏ вСщСствСнного с мантиссой ΠΈ экспонСнтой, ΠΊΠ°ΠΊ полагаСтся, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ нСльзя Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, это ΠΈΠΌΠ΅Π½Π½ΠΎ конвСртация.Π’ любом случаС, этим Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ сам процСссор.

int a = 123; float b = 25.14; a = b; b = a; cout << a << ‘ ‘ << b << endl;

int a = 123;

float b = 25.14;

a = b;

b = a;

cout << a << ‘ ‘ << b << endl;

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ матСматичСский сопроцСссор ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ вСщСствСнноС Π² Ρ†Π΅Π»ΠΎΠ΅, ΠΈ Π·Π°Π³ΠΎΠ½ΠΈΡ‚ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ сдСлаСт ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ: Π·Π°Π³ΠΎΠ½ΠΈΡ‚ Ρ†Π΅Π»ΠΎΠ΅ Π² свой ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ рСгистр (называСтся ST), ΠΈ ΡƒΠΆΠ΅ послС ΠΈΠ· Π½Π΅Π³ΠΎ достанСт вСщСствСнноС с Ρ†Π΅Π»ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ, Ρ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€œΠ°β€.

Если ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· вСщСствСнного double (8 Π±Π°ΠΉΡ‚) Π² float (4 Π±Π°ΠΉΡ‚Π°), Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°ΠΊ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ сопроцСссор просто ΠΎΠΊΡ€ΡƒΠ³Π»ΠΈΡ‚ вСщСствСнноС Π΄ΠΎ значСния, ΡƒΠΌΠ΅Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ Π² 4 Π±Π°ΠΉΡ‚Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ:

float a; double b = 1234567891234565555.25; a = b; cout << a << ‘\n’ << b;

float a;

double b = 1234567891234565555.25;

a = b;

cout << a << ‘\n’ << b;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ число  1.234568e+18, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 1.2-с хвостиком Π² 18-ΠΉ стСпСни. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π² β€œa” ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ΅ число Π΄ΠΎ 6-Π³ΠΎ Π·Π½Π°ΠΊΠ° послС запятой, Π° Π½Π΅ 1.234567891234566e+18. Π’ Ρ†Π΅Π»ΠΎΠΌ для Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… вычислСний это Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚, Π½ΠΎ рСкомСндуСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вСщСствСнныС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎΠ± Π½Π΅ происходило Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²ΠΎΡ‚ округлСния.

Помимо прСобразования Ρ‚ΠΈΠΏΠ° Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ понятиС ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ°.

ΠΠ°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ привСдСния Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ:

int a; float b = 25.14; a = (int)b; cout << a << ‘ ‘ << b;

int a;

float b = 25.14;

a = (int)b;

cout << a << ‘ ‘ << b;

Если ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ – это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π‘++ (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ компилятора), Π² ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ, ТСстко ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ программистом. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ программист Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ компилятору, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² int, Π° Π½Π΅ Π² short int. Π’Π΅Π΄ΡŒ 25 помСщаСтся ΠΈ Π² int ΠΈ Π² short, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ компилятор программист ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ.

Π’ Π±Ρ‹Ρ‚Ρƒ Ρ‚Π°ΠΊΠΈΠ΅ прСобразования Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ Ρ€Π΅Π΄ΠΊΠΈΠ΅. Π”Π° ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅. ИдСология программирования Π² Π±Ρ‹Ρ‚ΠΎΠ²Ρ‹Ρ… условиях Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… выкрутасов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ граблями (ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ†Π΅Π»Ρ‹Ρ…), поэтому ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² Π‘++ Π½Π΅ стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ повсСмСстно.

πŸ™‚ Бпасибо Π·Π° эту ΡΡ‚Π°Ρ‚ΡŒΡŽ Π΅Ρ‘ Π°Π²Ρ‚ΠΎΡ€Ρƒ Stilet – супСр ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ Ρ„ΠΎΡ€ΡƒΠΌΠ° программистов ProgrammersForum.

ReSharper C++ 2021.2: подсказки ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ², инспСкции для нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Inline Function

NewsReleases

Read this post in other languages:

  • English

ReSharper C++ 2021.2 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступСн для скачивания! Π’ этом Ρ€Π΅Π»ΠΈΠ·Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ встроСнныС подсказки для скрытых ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ², Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Inline Function ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Unreal Engine. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ список инспСкций для ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² соотвСтствии с соврСмСнными стандартами C++ ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π°Π½Π°Π»ΠΈΠ· нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для чтСния.

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ 30-Π΄Π½Π΅Π²Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΆΠ΅ сСгодня. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° наш сайт ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Toolbox App, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ всС наши инструмСнты для Visual Studio.

БКАЧАВЬ RESHARPER C++ 2021.2

НиТС ΠΌΡ‹ расскаТСм ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΠΎ всСх Π½ΠΎΠ²Ρ‹Ρ… возмоТностях ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΡ… Π² 2021.2:

  • Подсказки ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ²
  • Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Inline Function
  • Π˜Π½ΡΠΏΠ΅ΠΊΡ†ΠΈΠΈ для нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ…
  • ГСнСрация ΠΊΠΎΠ΄Π°
  • Unreal Engine
  • Π˜Π½ΡΠΏΠ΅ΠΊΡ†ΠΈΠΈ для обновлСния ΠΊΠΎΠ΄Π°
  • ΠŸΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°

Подсказки ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ²

Π’ ReSharper C++ 2021.2 появились Π½ΠΎΠ²Ρ‹Π΅ встроСнныС подсказки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². Π’ C++ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ происходит автоматичСски. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, Ρ‚Π°ΠΊΠΎΠ΅ нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ добавлСния Π½ΠΎΠ²Ρ‹Ρ… строк Π² ΠΊΠΎΠ΄Π΅, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ, Π² случаС прСобразования числовых Ρ‚ΠΈΠΏΠΎΠ², точности.

ReSharper C++ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ подсказки для Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… конструкторов ΠΈΠ»ΠΈ Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² прСобразования.

Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ подсказки для стандартных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ встроСнных Ρ‚ΠΈΠΏΠΎΠ². Π’ частности, ΠΊ Π½ΠΈΠΌ относятся прСобразования числовых Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ точности ΠΈΠ»ΠΈ свойства знаковости.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ подсказки для стандартных ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² настройки ReSharper Environment | Inlay Hints | C++ | Type Conversion Hints.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, подсказки для прСобразования ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΈΡ… Π² список ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ подсказок Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π°. Для Π²Ρ‹Π·ΠΎΠ²Π° этих настроСк Ρ‡Π΅Ρ€Π΅Π· контСкстноС мСню Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ горячими клавишами Alt+Enter ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ подсказках ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ· этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² нашСм Π±Π»ΠΎΠ³Π΅.

Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Inline Function

Новый Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Inline Function позволяСт быстро Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅Π»ΠΎΠΌ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, помСститС ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΡƒ Π½Π° Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ мСню Refactor This ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Inline Function. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ мСню: ReSharper | Refactor | Inline.

ReSharper C++ сам Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ прСобразования, Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅Π½ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Если ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ, появится Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ сообщСниС с ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ объяснСниСм.

Π˜Π½ΡΠΏΠ΅ΠΊΡ†ΠΈΠΈ для нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ…

Π’ ReSharper C++ 2021.2 ΠΌΡ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ· нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ инспСкции, ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π·Π΄Π΅Π»Π° Constants and immutability Π² Β«C++ Core GuidelinesΒ».

  • ΠŸΠ΅Ρ€Π²Π°Ρ инспСкция Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ нСизмСняСмости ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой ссылку ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ReSharper C++ сообщит Π²Π°ΠΌ ΠΎ возмоТности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ссылку Π½Π° const, которая Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ функция Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.
  • Вторая инспСкция ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π²Π°ΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ спСцификатором constexpr ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вычислСны ΠΏΡ€ΠΈ компиляции. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΈ качСство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΏΡ€ΠΈ компиляции.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ инспСкции для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° управлСния для стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдлоТСния ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ константу Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² большСм числС случаСв.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΠΎ всСх, ΠΈ Π½ΠΎΠ²Ρ‹Ρ…, ΠΈ старых, инспСкциях для нСизмСняСмых Π΄Π°Π½Π½Ρ‹Ρ… Π² ReSharper C++ Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ нашСго Π±Π»ΠΎΠ³Π°.

ГСнСрация ΠΊΠΎΠ΄Π°

КакиС настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ? ΠœΡ‹ ΠΏΠΎΡΡ‚Π°Ρ€Π°Π»ΠΈΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ способ опрСдСлСния Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ Π² мСню ReSharper Code Editing | C++ | Code Generation.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ReSharper C++ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с пустым Ρ‚Π΅Π»ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, с появлСниСм настройки Default function body, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ сгСнСрированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΈΠ΄Π°Ρ‚ΡŒ std::logic_error, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.

ΠŸΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅Π»Π° ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ReSharper C++ автоматичСски Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π²Ρ‹Π·ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ссли Π²Ρ‹Π±Ρ€Π°Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ настройка.

Π’Π°ΠΊΠΆΠ΅ ReSharper C++ ΡƒΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ стандартныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ Π²Ρ‹Π·ΠΎΠ²Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

НовыС настройки Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° доступны для всСх ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… возмоТностСй ReSharper, связанных с созданиСм Ρ‚Π΅Π»Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ процСссы Generate ΠΈ относящиСся ΠΊ Π½ΠΈΠΌ контСкстныС дСйствия.

Unreal Engine

Π’ ReSharper C++ 2021.2 появилась полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Unreal Engine 5! Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π½Π½Π΅Π΅ ΠΏΡ€Π΅Π²ΡŒΡŽ UE5 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΠΉΡ‚Π΅ всС Ρ‚Π΅ ΠΆΠ΅ возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ Unreal Engine, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° UE4.

НовыС возмоТности Π² Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΊΠΎΠ΄Π° позволят Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с модулями ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ:

  • Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ автодополнСния Π² Ρ„Π°ΠΉΠ»Π°Ρ… .Build.cs
    ΠΈ .Target.cs ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Unreal Engine ReSharper C++ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ список доступных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
  • Новая инспСкция подсвСчиваСт мСста Π² ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ Π½Π΅Ρ‚ ссылки Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ Π² Ρ„Π°ΠΉΠ» . uproject ΠΈΠ»ΠΈ .uplugin ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… быстрых исправлСний.

Благодаря ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ReSharper C++ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ добавляСт Π² Ρ‚Π΅Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ стандартный Π²Ρ‹Π·ΠΎΠ² Super.

ΠœΡ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΡ€ΠΈ Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎΠΌ запускС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ReSharper C++ индСксируСт ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Unreal Engine Π½Π° 10% быстрСС.

Π˜Π½ΡΠΏΠ΅ΠΊΡ†ΠΈΠΈ для обновлСния ΠΊΠΎΠ΄Π°

ReSharper C++ 2021.2 пополняСт список инспСкций для обновлСния ΠΊΠΎΠ΄Π° Π² соотвСтствии с соврСмСнными стандартами:

  • ИспользованиС структурного связывания вмСсто tie(..): начиная с C++17 Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ std::tie() ΠΈΠ»ΠΈ boost::tie() для распаковки ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Ρ‹ β€” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ структурноС связываниС ΠΈ Ρ‚Π΅ΠΌ самым ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.
  • Π£ΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ свойства Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ псСвдонима шаблона ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ шаблона: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ выраТСния свойств Ρ‚ΠΈΠΏΠΎΠ² C++11, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ псСвдонимы шаблона C++14.
  • ИспользованиС std::size: инспСкция ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ std::size Π² качСствС типобСзопасного Π°Π½Π°Π»ΠΎΠ³Π° ΠΈΠ΄ΠΈΠΎΠΌΡ‹ Π‘ для вычислСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива.
  • ИспользованиС Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ вмСсто memset: нулСвая инициализация Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ошибки, связанныС с memset.

ΠŸΠΎΠΌΠΎΡ‰ΡŒ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π°

Π‘Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΈ Π²Π°ΠΌ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов? Π‘ появлСниСм Π½ΠΎΠ²Ρ‹Ρ… контСкстных дСйствий любоС строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π» C++11, Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для чтСния, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° cppreference.com, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ класса ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° Read more Π²ΠΎ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ Quick Documentation (Ctrl+Shift+F1) β€” ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ страница откроСтся Π² вашСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

Благодаря ΡƒΠΌΠ½ΠΎΠΌΡƒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡŽ отступов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ: Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши Backspace, ΠΊΠΎΠ³Π΄Π° курсор находится ΠΏΠ΅Ρ€Π΅Π΄ отступом, ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ всС лишниС символы сразу. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ удалСния отступов, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² настройки ReSharper Environment | Editor | Behavior.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ измСнСния

ΠœΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΏΠ΅ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ вас, Ссли ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сравниваСтС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ° с Π½ΡƒΠ»Π΅ΠΌ, β€” это ΠΌΠΎΠΆΠ΅Ρ‚ Π³Ρ€ΠΎΠ·ΠΈΡ‚ΡŒ бСсконСчным Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΡΡ‚ΠΈΠΆΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°.

ВстроСнный Clang-Tidy Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ вСрсии Clang 12 ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈΠ· свСТСй вСрсии LLVM. Помимо этого ΠΌΡ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Clang-Tidy ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со слоТными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π² частности Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… C++20.

ReSharper C++ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ компилятора ΠΈΠ· Visual Studio 16.10:

  • стандартный ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ /std:c++20,
  • ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ /await:strict для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ ΠΈΠ· C++20, Π½ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ Π½Π° C++14 ΠΈΠ»ΠΈ C++17.

На этом всС. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй ΠΈ исправлСнных ошибок Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 180 ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ². ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π² нашСм Π±Π°Π³-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ измСнСния ΠΈ с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ReSharper. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки InspectCode Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ восстанавливаСт ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ NuGet ΠΈ собираСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ смотритС Π½Π°ΡˆΡƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π² ReSharper.

РасскаТитС, Ρ‡Ρ‚ΠΎ Π² этом Ρ€Π΅Π»ΠΈΠ·Π΅ ReSharper C++ ΠΏΠΎΡ€Π°Π΄ΠΎΠ²Π°Π»ΠΎ вас большС всСго. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ReSharper C++ 2021.2 ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ своими впСчатлСниями β€” Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅.

БКАЧАВЬ RESHARPER C++ 2021.2

Π’Π°ΡˆΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ReSharper C++
The Drive to Develop

Автор ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Elvira Mustafina

2021.2 Inlay hints newsletter refactoring Unreal Engine

Prev post ReSharper C++ 2021.1: ΡΡ‚ΠΈΠ»ΡŒ синтаксиса, Π½ΠΎΠ²Ρ‹Π΅ возмоТности C++ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Unreal EngineReSharper C++ 2021.3: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Visual Studio 2022, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² Unreal Engine, Π½ΠΎΠ²Ρ‹Π΅ возмоТности C++20 ΠΈ C Next post

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Π±Π»ΠΎΠ³

Subscribe form

By submitting this form, I agree to the JetBrains Privacy Policy Notification icon

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ эту Ρ„ΠΎΡ€ΠΌΡƒ, я Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽ JetBrains s. r.o. (Β«JetBrainsΒ») ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΅ имя, элСктронный адрСс ΠΈ Π³Π΅ΠΎΠ΄Π°Π½Π½Ρ‹Π΅ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΌΠ½Π΅ новостных рассылок, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ коммСрчСскиС прСдлоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽ JetBrains ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠΎΠΈΡ… ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ. Π― соглашаюсь с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ такая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с использованиСм сторонних сСрвисов Π² соотвСтствии с ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ JetBrains. Π― ΠΌΠΎΠ³Ρƒ Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ΠΎΠ·Π²Π°Ρ‚ΡŒ согласиС Π² своСм ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ссылка для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ подписки содСрТится Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСктронном письмС.

НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² C

ΠžΠ±Π·ΠΎΡ€

НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² языкС C β€” это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… компилятором Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ называСтся автоматичСским ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ². ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это происходит, ΠΊΠΎΠ³Π΄Π° Π² арифмСтичСском Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ присутствуСт Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ всС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… самого высокого Ρ€Π°Π½Π³Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² этом Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π² соотвСтствии с ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ прСобразования Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ языком C.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² C?

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ прСобразования Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² C.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ прСобразования ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Когда ΠΌΡ‹ пишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C, ΠΌΡ‹ объявляСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы, Ссли ΠΌΡ‹ выполняСм ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ»ΠΈ пишСм ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого выраТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ это, Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C.

Код:

Π’Ρ‹Π²ΠΎΠ΄:

Π—Π΄Π΅ΡΡŒ, Π² этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° C, пСрСмСнная ‘a’ объявлСна ​​как float, Π° ‘b’ объявлСна ​​как int. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слоТСния float ‘a’ ΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ‘3’ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ‘b’, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΊ ‘a’ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ†Π΅Π»ΠΎΠ΅ число для этого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ выраТСния.

Π’ΠΈΠΏΡ‹ прСобразования Ρ‚ΠΈΠΏΠΎΠ²

Π’ языкС C сущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° прСобразования Ρ‚ΠΈΠΏΠΎΠ².

  1. НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².
  2. Π―Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².

1. НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

НачнСм с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ 10 ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈ 2 зарядных устройства, Ссли ΠΌΡ‹ ΠΈΡ… Π΄ΠΎΠ±Π°Π²ΠΈΠΌ, Ρ‚ΠΎ получится 10 ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈ 2 зарядных устройства, Π° Π½Π΅ 12 ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² ΠΈΠ»ΠΈ 12 зарядных устройств, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π² языкС C Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, поэтому ΠΈΡ… нСльзя Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΠΈΡ… Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² происходит, ΠΊΠΎΠ³Π΄Π° Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ присутствуСт Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ сам компилятор, это Ρ‚Π°ΠΊΠΆΠ΅ называСтся автоматичСским ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ². Π—Π΄Π΅ΡΡŒ происходит автоматичСскоС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Ρ€ΡŽ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ наибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Напр. Если ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ΄Π½ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число ΠΈ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ числом с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сущСствуСт иСрархия прСобразования, Π² соотвСтствии с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ прСобразования ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

Π—Π΄Π΅ΡΡŒ short прСобразуСтся Π² int, int Π² unsigned int ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Но Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½Π΅ΠΌ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ, Ρ‚ΠΎ с компилятором C это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C.

Код:

Π’Ρ‹Π²ΠΎΠ΄:

Π Π°Π·Π±ΠΈΠ²ΠΊΠ° Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ C согласно компилятору ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅:

Π’Ρ‹Π²ΠΎΠ΄ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хранящССся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ‘d’, которая объявлСна ​​как Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ. Однако, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎ ΠΆΠ΅ самоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сохраняСтся ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС дСсятичной Ρ‚ΠΎΡ‡ΠΊΠΈ игнорируСтся.

2. Π―Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

НачнСм с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Если ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ двумя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Но Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ Π½Π°ΠΌ Π²Ρ‹Π²ΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ float ΠΈΠ»ΠΈ double.

Напр.

Π—Π΄Π΅ΡΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Ρ‹Π» 6,66 , Π½ΠΎ a ΠΈ b Π±Ρ‹Π»ΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, поэтому Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Ρ‹Π» ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число 6 . Но Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ 6,66 Π² качСствС Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².

Π―Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² относится ΠΊ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ², выполняСмому программистом ΠΏΡƒΡ‚Π΅ΠΌ измСнСния Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… выраТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° привСдСния Ρ‚ΠΈΠΏΠ°.

Π―Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках Ρ‚Π°ΠΊΠΆΠ΅ называСтся ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ программист, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ нСявного прСобразования Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ компилятор.

Бинтаксис:

Π―Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° привСдСния, ΠΈ ΠΎΠ½ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π΄Π΅ΡΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ°, Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ константой, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C для объяснСния явного прСобразования Ρ‚ΠΈΠΏΠΎΠ²:

Код:

Π’Ρ‹Π²ΠΎΠ΄:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Он Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ a Π² float Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² соотвСтствии с нСявным ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² Π²Ρ‹Π²ΠΎΠ΄ int ΠΈ float Ρ€Π°Π²Π΅Π½ float . Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния становится Ρ€Π°Π²Π½Ρ‹ΠΌ 6,6667 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΆΠ΅ объявлСно ΠΊΠ°ΠΊ x 9.0018 .

Но Π΅ΡΡ‚ΡŒ нСсколько ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

  1. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… an (int) Π² (float) являСтся Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, цСлочислСнная пСрСмСнная Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ int, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π΅ Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

  2. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x = b/(float)a Π½Π΅ Ρ€Π°Π²Π½ΠΎ x = float(b/a) , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС арифмСтичСская опСрация выполняСтся Π΄ΠΎ прСобразования Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся 6. 000 , ΠΈ Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x ΠΊΠ°ΠΊ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 6.000 , ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ останСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ.

Π‘Π»ΡƒΡ‡Π°ΠΈ нСявного прСобразования Ρ‚ΠΈΠΏΠΎΠ² Π² C.

ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² автоматичСским ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ², Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ C это встрСчаСтся Ρ€Π΅Π΄ΠΊΠΎ. НиТС пСрСчислСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

  1. Π Π°Π½Π³ конвСрсии
  2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² выраТСниях присваивания
  3. Акция
  4. ПониТСниС Π² долТности
  5. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ выраТСния

1. Π Π°Π½Π³ прСобразования

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΊΠ°Π»Ρƒ ΠΎΡ‚ 1 Π΄ΠΎ 9 ΠΎΡ‚ самого Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π΄ΠΎ самого высокого, Ρ‚.Π΅. ΠΈΡ… Ρ€Π°Π½Π³. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСт ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² соотвСтствии с Ρ€Π°Π½Π³ΠΎΠΌ прСобразования, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ конвСрсии:

Код:

Π’Ρ‹Π²ΠΎΠ΄:

Π—Π΄Π΅ΡΡŒ пСрСмСнная ‘a’ объявлСна ​​как char, Π° пСрСмСнная ‘ b’ объявлСн ΠΊΠ°ΠΊ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ€Π°Π½Π³ прСобразования, Ρ‡Π΅ΠΌ char. Когда ΠΌΡ‹ складываСм Π΄Π²Π°, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ char, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ становится (‘S’ + 1), Ρ‡Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΎ T. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ T.

2. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² выраТСниях присваивания

Начиная с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания = , Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ стороны: сначала (лСвая) ΠΎΡ‚ ‘=’ ΠΈ (правая). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, появлСниС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ условия.

  • Если ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, Ρ‚ΠΎ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ€Π°Π½Π³Π° прСобразования Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

Напр.

Π—Π΄Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π² Π»Π΅Π²ΠΎΠΉ части ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий Ρ€Π°Π½Π³, поэтому ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² Π»Π΅Π²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Ρ‚. Π΅. Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈ ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ASCII x, Ρ‚. Π΅. 120.

  • Если ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий Ρ€Π°Π½Π³, Ρ‡Π΅ΠΌ лСвая Ρ‡Π°ΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ Π΄ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π»Π΅Π²ΠΎΠΉ части

Напр.

Π—Π΄Π΅ΡΡŒ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ β€” int, Π° Π»Π΅Π²Ρ‹ΠΉ β€” float, поэтому Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 112,3 Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΎ Π² 112 ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ число.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚:

Код:

Π’Ρ‹Π²ΠΎΠ΄:

Π—Π΄Π΅ΡΡŒ char a прСобразуСтся Π² int ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ASCII a, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π²Π½ΠΎ 97, присваиваСтся int a. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 112,3 прСобразуСтся Π² int 112, Π³Π΄Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ послС дСсятичных Π·Π½Π°ΠΊΠΎΠ² ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ.

Когда ΠΌΡ‹ выполняСм арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, объявлСнная пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° Π² соотвСтствии с Ρ€Π°Π½Π³ΠΎΠΌ прСобразования.

3. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅

Π’ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ Ρ€Π°Π½Π³Π° прСобразуСтся Π² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ высокого Ρ€Π°Π½Π³Π°. Если ΠΌΡ‹ возьмСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ char , int ΠΈ float , Ρ‚ΠΎ char являСтся подмноТСством int, Π° int являСтся подмноТСством float, поэтому, Ссли ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ создаСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΈ это дСлаСтся для прСдотвращСния ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Π”Π°Π²Π°ΠΉΡ‚Π΅ возьмСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° малСнькая ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ° ΠΈ ΠΎΠ΄Π½Π° большая ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ помСстим ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒ Π² Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒ, ΠΎΠ½Π° Π»Π΅Π³ΠΊΠΎ помСстится, ΠΊΠ°ΠΊ здСсь ΠΌΡ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅ΠΌ, Π½ΠΎ Ссли ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ условиС, ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ здСсь ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΆΠ°Π΅ΠΌ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π΅:

Код:

Π’Ρ‹Π²ΠΎΠ΄:

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ пСрСмСнная ‘a’ объявлСна ​​как Ρ†Π΅Π»ΠΎΠ΅ число, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅ хранится символ ‘x’. Но ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Β«xΒ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Β«Ρ†Π΅Π»ΠΎΠ³ΠΎ числа»? Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ASCII Β«xΒ» хранится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Β«aΒ», ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«aΒ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ C.

4. ПониТСниС

ΠŸΡ€ΠΈ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ высокого Ρ€Π°Π½Π³Π° прСобразуСтся Π² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ Ρ€Π°Π½Π³Π°. Если ΠΌΡ‹ возьмСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ char , int ΠΈ float , число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой являСтся надмноТСством int, Π° int являСтся надмноТСством char. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ привСсти ΠΊ нСпрСдсказуСмым Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ char ΠΈ int. ΠΊΠΎΠ³Π΄Π° char прСобразуСтся Π² int, ΠΎΠ½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ char ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ASCII, Π½ΠΎ значСния ASCII ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ 256, Ссли ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠ·ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ int 257 Π΄ΠΎ char, ΠΎΠ½ΠΎ пСрСполнится, ΠΈ компилятор выдаст прСдупрСТдСния.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π΅:

Код:

Π’Ρ‹Π²ΠΎΠ΄:

5. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ выраТСния.

Когда Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΎΠ½ называСтся Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ называСтся Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ слоТными, ΠΊΠ°ΠΊ ΠΈ Ρ‚Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ рассмотрСли Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ПониТСниС».

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Код:

Π’Ρ‹Π²ΠΎΠ΄:

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ 3 Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… выраТСния. Π‘Π½Π°Ρ‡Π°Π»Π° пСрСмСнная Β«eΒ» ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ char, Π° пСрСмСнная Β«aΒ» ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ€Π°Π½Π³ прСобразования, Ρ‡Π΅ΠΌ char. Когда ΠΌΡ‹ складываСм Π΄Π²Π°, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ char, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ становится (‘V’ + 1), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ W. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ W. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС, ΠΏΡ€ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ€Π°Π½Π³ прСобразования, Ρ‡Π΅ΠΌ Ρ†Π΅Π»ΠΎΠ΅ число. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ случаС ΠΏΡ€ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ long double ΠΈ char Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ASCII char умноТаСтся Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ long double, ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ получаСтся long double.

ΠŸΡ€Π°Π²ΠΈΠ»Π° нСявного прСобразования

1. ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅

9 0302 ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ 9030 2 ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅
Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 1 Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€. Π²Π½ΡƒΡ‚Ρ€. 0291 ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ символ

2. Ρ†Π΅Π»Ρ‹Π΅

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 1 Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
Ρ†Π΅Π»ΠΎΠ΅ число Ρ†Π΅Π»ΠΎΠ΅ число Ρ†Π΅Π»ΠΎΠ΅
Ρ†Π΅Π»ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ΅
int float float
int double double
int 9 0303 long double long double
int char int

3. Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ

9 0298
Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 1 Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ символ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ
9 0005

4. ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ

9030 2 long double
Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 1 Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ
ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ long double
float char float

5. double 9 0005

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 1 Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ символ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ 9030 3

6. Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 1 Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
long double long double Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ
Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ символ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ

7. char

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 1 Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
символ символ char

Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎ нСявных прСобразованиях.

  • Если ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий Ρ€Π°Π½Π³, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ€Π°Π½Π³, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ этот Π±ΠΎΠ»Π΅Π΅ высокий Ρ€Π°Π½Π³. (ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… для прСобразования). Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ°.
  • Когда Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… double прСобразуСтся Π² float, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΠΊΡ€ΡƒΠ³Π»ΡΡŽΡ‚ΡΡ.
  • Когда происходит какая-Π»ΠΈΠ±ΠΎ арифмСтичСская опСрация ΠΌΠ΅ΠΆΠ΄Ρƒ int ΠΈ char, Ρ‚ΠΎΠ³Π΄Π° char прСобразуСтся Π² Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ASCII, Π° Π·Π°Ρ‚Π΅ΠΌ выполняСтся опСрация.
  • Когда Ρ‚ΠΈΠΏ int прСобразуСтся Π² Ρ‚ΠΈΠΏ float ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ float прСобразуСтся Π² Ρ‚ΠΈΠΏ double, Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π½Π΅ увСличиваСтся.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° прСобразования Ρ‚ΠΈΠΏΠΎΠ²

  1. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ любой арифмСтичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ являСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠΌ, Ρ‚ΠΎ для Π΅Π³ΠΎ сохранСния Π² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².
  2. ΠŸΡ€ΠΈ использовании прСобразования Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ.
  3. АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ вычислСны.
  4. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Ρ€Π°Π½Π³ΠΎΠ² конвСрсии ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для получСния Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

  • НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ называСтся автоматичСским ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ автоматичСски выполняСтся компилятором.
  • ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ сам программист, называСтся явным ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ².
  • БущСствуСт Ρ€Π°Π½Π³ прСобразования, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π² C происходит нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ².
  • БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ случаСв нСявного прСобразования Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ выраТСния присваивания, Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ выраТСния ΠΈ Ρ‚. Π΄.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² C β€” нСявноС ΠΈ явноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² C

ОбновлСно Β· 2 ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

Когда ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΎΠ½ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΡ†Π΅ΡΡ прСобразования ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ называСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ°.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π² c ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Ρ‚ΠΈΠΏΠ°:

НСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

Когда ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² выполняСтся автоматичСски компилятором Π±Π΅Π· Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° программистов, Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ прСобразования извСстСн ΠΊΠ°ΠΊ нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° .

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ всС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… наибольшСго ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ», примСняСмых ΠΏΡ€ΠΈ вычислСнии Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅:

ВсС Ρ‚ΠΈΠΏΡ‹ short ΠΈ char автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² int, Π·Π°Ρ‚Π΅ΠΌ

  1. Если ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ long double, Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² long double ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ long double.
  2. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ, Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅.
  3. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.
  4. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ unsigned long int, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² unsigned long int.
  5. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² β€” long int, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” unsigned int, Ρ‚ΠΎ
    1. Ссли long int ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ всС значСния unsigned int, Ρ‚ΠΎ unsigned int прСобразуСтся Π² long int.
    2. Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² unsigned long int.
  6. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ long int, Ρ‚ΠΎΠ³Π΄Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² long int.
  7. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ unsigned int, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² unsigned int.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния прСобразуСтся Π² Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π»Π΅Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания ΠΏΠ΅Ρ€Π΅Π΄ присвоСниСм Π΅ΠΌΡƒ значСния.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ float Π² int Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ усСчСниС Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ части, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ double Π² float Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ Ρ†ΠΈΡ„Ρ€, Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ long int Π² int ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Π½ΠΈΡŽ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ высокого порядка.

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

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

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