ðÒÉ×ÅÔ Dimmy!
17 Oct 05 16:19, Dimmy Timchenko ÐÉÓÁÌ Alex Mogilnikov:
AM>> ? ôÁË short s = 0; - ÜÔÏ É ÅÓÔØ ÏÓÔÁÌØÎÏÊ ÓÌÕÞÁÊ. úÄÅÓØ ÎÅÔ AM>> ÎÉËÁËÉÈ ÌÉÔÅÒÁÌÏ×
DT> HÕ, ÅÓÌÉ "0" ÄÌÑ ÔÅÂÑ - ÎÅ ÌÉÔÅÒÁÌ, ÔÏÇÄÁ ÉÚ×ÉÎÉ, ÞÔÏ ÄÏÓÔÁÀ Ó×ÏÉÍÉ DT> ÇÌÕÐÙÍÉ ÒÁÚÇÏ×ÏÒÁÍÉ. :) ðÒÅÖÄÅ ÞÅÍ ÎÁ ÔÁËÉÅ ÔÅÍÙ ÏÂÝÁÔØÓÑ, ×ÉÄÉÍÏ, DT> ÎÁÄÏ ÄÏÇÏ×ÏÒÉÔØÓÑ Ï ÔÅÒÍÉÎÏÌÏÇÉÉ.
DT> éÚ ï'òÅÊÌÉ:
DT> 1.2.3 Literals DT> A literal is an integer, floating-point, Boolean, character, or string DT> constant.
[ÐÏÓËÉÐÁÎÏ]
úÁÂÁ×ÎÏ. ÷ ÓÐÅÃÉÆÉËÁÃÉÉ ÑÚÙËÁ C Ñ ×ÓÔÒÅÔÉÌ ÕÐÏÍÉÎÁÎÉÅ ÔÏÌØËÏ Ä×ÕÈ ×ÉÄÏ× ÌÉÔÅÒÁÌÏ×: string literal É compound literal. HÉËÁËÉÅ ÄÒÕÇÉÅ ÜÌÅÍÅÎÔÙ ÑÚÙËÁ ÔÁÍ ÌÉÔÅÒÁÌÁÍÉ ÎÅ ÎÁÚÙ×ÁÀÔ. åÓÌÉ ÔÙ ÉÓÐÏÌØÚÕÅÛØ ÔÅÒÍÉÎÏÌÏÇÉÀ, ÏÔÓÕÔÓÔ×ÕÀÝÕÀ × ÓÐÅÃÉÆÉËÁÃÉÉ ÑÚÙËÁ, ÔÏ ÄÅÊÓÔ×ÉÔÅÌØÎÏ, ÉÍÅÅÔ ÓÍÙÓÌ ÚÁÒÁÎÅÅ ÄÏÇÏ×ÏÒÉÔØÓÑ Ï ÅÅ ÚÎÁÞÅÎÉÉ. :)
ëÓÔÁÔÉ "0" (ÓÉÍ×ÏÌ × Ä×ÏÊÎÙÈ ËÁ×ÙÞËÁÈ) - ÜÔÏ ËÁË ÒÁÚ string literal. :) HÏ × ÍÏÅÍ ÐÒÉÍÅÒÅ ËÁ×ÙÞÅË ×ÏËÒÕÇ ÎÕÌÑ ÎÅ ÂÙÌÏ. ðÒÏÓÔÏ ÓÉÍ×ÏÌ 0 - ÜÔÏ É ÎÅ string literal, É ÎÅ compound literal.
DT> ÷ӣ ÏÞÅÎØ ÐÒÏÓÔÏ. þÉÓÌÏ, ÚÁÐÉÓÁÎÎÏÅ × ×ÉÄÅ ÌÉÔÅÒÁÌÁ (ÉÌÉ ËÏÎÓÔÁÎÔÎÏÅ DT> ×ÙÒÁÖÅÎÉÅ) ÎÅ ÐÒÉÎÁÄÌÅÖÉÔ Ë ËÁËÏÍÕ-ÔÏ ËÏÎËÒÅÔÎÏÍÕ, n-ÂÉÔÎÏÍÕ DT> ÃÅÌÏÞÉÓÌÅÎÎÏÍÕ ÉÌÉ ×ÅÝÅÓÔ×ÅÎÎÏÍÕ ÔÉÐÕ.
ïÐÑÔØ ÚÁÂÁ×ÎÏ. üÔÏ ÔÏÖÅ × Ô×ÏÅÊ ËÎÉÖËÅ ÎÁÐÉÓÁÎÏ? óÐÅÃÉÆÉËÁÃÉÑ ÑÚÙËÁ ÇÏ×ÏÒÉÔ ÏÂÒÁÔÎÏÅ:
[#5] The type of an integer constant is the first of the corresponding list in which its value can be represented.
|| | Octal or Hexadecimal Suffix || Decimal Constant | Constant
-------------++-----------------------+------------------------ none ||int | int ||long int | unsigned int ||long long int | long int || | unsigned long int || | long long int || | unsigned long long int
-------------++-----------------------+------------------------ u or U ||unsigned int | unsigned int ||unsigned long int | unsigned long int ||unsigned long long int | unsigned long long int
-------------++-----------------------+------------------------ l or L ||long int | long int ||long long int | unsigned long int || | long long int || | unsigned long long int
-------------++-----------------------+------------------------ Both u or U ||unsigned long int | unsigned long int and l or L ||unsigned long long int | unsigned long long int
-------------++-----------------------+------------------------ ll or LL ||long long int | long long int || | unsigned long long int
-------------++-----------------------+------------------------ Both u or U ||unsigned long long int | unsigned long long int and ll or LL || |
óÏÇÌÁÓÎÏ ÜÔÉÍ ÐÒÁ×ÉÌÁÍ ËÏÎÓÔÁÎÔÁ 0 ÉÍÅÅÔ ÔÉÐ int.
AM>> ëÁË Ñ ÕÖÅ ÐÉÓÁÌ, ÐÒÁ×ÉÌÁ ×ÙÐÏÌÎÅÎÉÑ ÏÐÅÒÁÃÉÑ (× ÔÏÍ ÞÉÓÌÅ integer AM>> promotion) ÏÐÒÅÄÅÌÑÀ ÒÅÚÕÌØÔÁÔ, ËÏÔÏÒÙÊ ÄÏÌÖÎÁ ÄÁÔØ ÏÐÅÒÁÃÉÑ, É AM>> ÎÉËÁË ÎÅ ÏÇÒÁÎÉÞÉ×ÁÅÔ ËÏÍÐÉÌÑÔÏÒ × ÓÐÏÓÏÂÅ ÄÏÓÔÉÖÅÎÉÑ ÜÔÏÇÏ AM>> ÒÅÚÕÌØÔÁÔÁ.
DT> äÁ ÎÅÔ, ËÁË ÒÁÚ ÜÔÉ ÐÒÁ×ÉÌÁ ÐÒÑÍÏ ÏÇÏ×ÁÒÉ×ÁÀÔ, ËÁË É Ë ËÁËÉÍ ÔÉÐÁÍ DT> ÐÒÉ×ÏÄÑÔÓÑ ÞÁÓÔÉ ×ÙÒÁÖÅÎÉÑ.
üÔÉ ÐÒÁ×ÉÌÁ ÏÐÒÅÄÅÌÑÀÔ, ËÁËÏÊ ÒÅÚÕÌØÔÁÔ ÄÏÌÖÅÎ ÐÏÌÕÞÉÔØÓÑ × ÔÏÞËÅ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ. íÅÖÄÕ Ä×ÕÍÑ ÓÏÓÅÄÎÉÍÉ ÔÏÞËÁÍÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ËÏÍÐÉÌÑÔÏÒ ÉÍÅÅÔ ÐÒÁ×Ï ÓÇÅÎÅÒÉÔØ ÌÀÂÏÊ ËÏÄ, ÄÁÀÝÉÊ ÐÒÁ×ÉÌØÎÙÊ ÒÅÚÕÌØÔÁÔ (ÔÏ ÅÓÔØ ÒÅÚÕÌØÔÁÔ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÊ ÐÒÁ×ÉÌÁÍ ÑÚÙËÁ). ÷ ÏÂÓÕÖÄÁÅÍÏÍ ÐÒÉÍÅÒÅ ÔÏÞËÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ Ñ×ÌÑÅÔÓÑ ×ÏÚ×ÒÁÝÁÅÍÙÊ ÆÕÎËÃÉÅÊ ÂÁÊÔ. éÌÉ × Ô×ÏÅÊ ËÎÉÇÅ É ÐÒÏ ÔÏÞËÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÎÁÐÉÓÁÎÏ ÓÏ×ÓÅÍ ÎÅ ÔÏ, ÞÔÏ × ÓÐÅÃÉÆÉËÁÃÉÉ ÑÚÙËÁ? :)
DT> é ÔÏÔ ÖÅ IAR, ÎÁÐÒÉÍÅÒ, ÄÁÖÅ ÐÒÅÄÌÁÇÁeÔ DT> ÏÐÃÉÀ: ÓÞÉÔÁÔØ double 64- ÉÌÉ 32-ÂÉÔÎÙÍ, ÐÏÔÏÍÕ ËÁË ÐÒÉ ×ÙÞÉÓÌÅÎÉÉ DT> ×ÅÝÅÓÔ×ÅÎÎÏÇÏ ×ÙÒÁÖÅÎÉÑ ÅÇÏ ÜÌÅÍÅÎÔÙ ÂÕÄÕÔ ÐÒÅÏÂÒÁÚÏ×ÁÎÙ Ë ÔÉÐÕ DT> double. HÅÚÁ×ÉÓÉÍÏ ÏÔ ÎÁÛÅÇÏ ÖÅÌÁÎÉÑ. ðÏÒÏÖÄÁÑ ÎÅÜÆÆÅËÔÉ×ÎÙÊ ËÏÄ.
üÔÏ ÓÏ×ÓÅÍ ÄÒÕÇÁÑ ÔÅÍÁ. åÓÌÉ ÂÙ ÒÅÞØ ÛÌÁ Ï ÍÁËÓÉÍÉÚÁÃÉÉ ÜÆÆÅËÔÉ×ÎÏÓÔÉ ËÏÄÁ, Ñ ÂÙ É ÎÅ ×ÓÔÕÐÁÌ × ÄÉÓËÕÓÓÉÀ. óÁÍÙÊ ÜÆÆÅËÔÉ×ÎÙÊ ËÏÄ ÄÏÓÔÉÇÁÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅÍ ÁÓÓÅÍÂÌÅÒÁ. HÅÄÁ×ÎÏ, ËÓÔÁÔÉ, Ñ ÐÒÉ×ÏÄÉÌ ÐÒÉÍÅÒ ÏÐÅÒÁÔÏÒÁ "ÕÍÎÏÖÅÎÉÑ" ÎÁ ÁÓÓÅÍÂÌÅÒÅ.
DT> ïÄÎÁËÏ × ÐÒÁ×ÉÌÁÈ ÜÔÏ promotion ÏÐÉÓÁÎÏ ޣÔËÏ É ÎÅÄ×ÕÓÍÙÓÌÅÎÎÏ.
þÔÏÂÙ ÒÁÓÛÉÒÉÔØ ÏÂÌÁÓÔØ ÏÐÒÅÄÅÌÅÎÉÑ ÏÐÅÒÁÃÉÉ.
DT> òÁÚÎÉÃÁ × ÄÁÎÎÏÍ ÓÌÕÞÁÅ - × ÜÆÆÅËÔÉ×ÎÏÓÔÉ.
ðÏÄÍÅÎÁ ÔÅÍÙ. HÕÖÎÁ ÜÆÆÅËÔÉ×ÎÏÓÔØ - ÒÅÁÌÉÚÕÊ ÎÁ ÁÓÓÅÍÂÌÅÒÅ.
DT> é ×ÙÈÏÄÉÔ, ÞÔÏ ×ÓÅ ÜÔÉ DT> ÏÐÅÒÁÔÏÒÙ É ÐÒÏÞÉÅ ËÒÁÓÏÔÙ ÎÁÍ ÎÅ ÐÏÍÏÇÕÔ É ÎÁÄÏ ÐÉÓÁÔØ ÆÕÎËÃÉÀ ÎÁ DT> ÁÓÓÅÍÂÌÅÒÅ. åÓÌÉ ÖÅ ÒÅÞØ ÏÂ ÜÆÆÅËÔÉ×ÎÏÓÔÉ ÎÅ ÉģÔ, ÔÏ É ÐÕÓÔØ ÓÅÂÅ DT> "ÐÒÏÍÏÕÔÉÔ" ÈÏÔØ ÄÏ 32 ÂÉÔ, ÈÏÔØ ÄÏ 64.
HÁÌÉÞÉÅ ÉÌÉ ÏÔÓÕÔÓÔ×ÉÅ ÜÔÏÇÏ ÐÒÁ×ÉÌÁ ÎÅ ×ÌÉÑÅÔ ÎÁ ÜÆÆÅËÔÉ×ÎÏÓÔØ ÒÅÁÌÉÚÁÃÉÉ ËÏÎËÒÅÔÎÏÇÏ ×ÙÒÁÖÅÎÉÑ. ïÎÏ ÌÉÛØ ÏÐÒÅÄÅÌÑÅÔ ÏÂÌÁÓÔØ ÏÐÒÅÄÅÌÅÎÉÑ ÏÐÅÒÁÃÉÉ.
DT>>> ôÁË ËÁËÉÅ ÖÅ ÜÔÏ ÂÉÂÌÉÏÔÅËÉ? :) ðÏÌØÚÁ ÂÉÂÌÉÏÔÅËÉ × ÔÏÍ, ÞÔÏÂÙ DT>>> ÓÁÍÏÍÕ ÎÅ ÐÉÓÁÔØ. :)
DT> HÕ Á Ñ ÉÍÅÌ × ×ÉÄÕ ÎÅÓËÏÌØËÏ ÉÎÏÅ ÚÎÁÞÅÎÉÅ: ÇÏÔÏ×ÙÊ, ÏÔÌÁÖÅÎÎÙÊ ËÏÄ, DT> ËÏÔÏÒÙÊ ÔÅÂÅ ÎÅ ÎÁÄÏ ÐÉÓÁÔØ ÓÁÍÏÍÕ. éÄÅÁÌØÎÏ - × ×ÉÄÅ ÉÓÈÏÄÎÉËÏ×.
HÕ ÔÁË ÐÏÌÎÏ × ÉÎÔÅÒÎÅÔÅ ÎÁ ×ÓÅ ÓÌÕÞÁÉ ÖÉÚÎÉ. õ ÍÅÎÑ ÎÁ ËÏÍÐÁÈ ×ÓÑ ÏÐÅÒÁÃÉÏÎËÁ É 99% ÐÒÏÇÒÁÍÍ ÓÏÂÒÁÎÙ ÉÚ ÓËÁÞÁÎÎÙÈ ÉÚ ÉÎÔÅÒÎÅÔÁ ÉÓÈÏÄÎÉËÏ×.
DT> á ÍÏÄÕÌÉ (ËÓÔÁÔÉ, × C/C++ ÍÏÄÕÌÅÊ ÎÅÔ)
á ÏÎÉ ÎÅ ÎÁ ó/C++, ÜÔÏ ÏÂßÅËÔÎÙÅ ÆÁÊÌÙ. ðÏÄ ÍÏÄÕÌÅÍ Ñ ÐÏÄÒÁÚÕÍÅ×ÁÌ ÅÄÉÎÉÃÕ ËÏÍÐÉÌÑÃÉÉ (ÁÓÓÅÍÂÌÉÒÏ×ÁÎÉÑ).
DT> ÍÏÖÎÏ ÂÒÁÔØ É ÉÚ ÏÔÄÅÌØÎÙÈ DT> ÏÂßÅËÔÎÙÈ ÆÁÊÌÏ×. óÅÊÞÁÓ ÔÁËÉÅ ÐÏÄÒÏÂÎÏÓÔÉ ÒÁÂÏÔÙ ÌÉÎËÅÒÁ DT> ÎÅÓÕÝÅÓÔ×ÅÎÎÙ. üÔÏ ÒÁÎØÛÅ ÔÁËÉÅ ÔÏÎËÏÓÔÉ ÓÉÌØÎÏ ×ÌÉÑÌÉ ÎÁ ÓËÏÒÏÓÔØ DT> ËÏÍÐÉÌÑÃÉÉ...
äÅÌÏ ÎÅ × ÓËÏÒÏÓÔÉ, Á × ÏÂßÅÍÅ ×ÙÈÏÄÎÏÇÏ ÏÂßÅËÔÎÏÇÏ ÆÁÊÌÁ. HÁÐÒÉÍÅÒ Õ ÍÅÎÑ × libc.a ÄÌÑ avr ÂÏÌÅÅ ÓÏÔÎÉ ÏÂßÅËÔÎÙÊ ÆÁÊÌÏ×, ÉÈ ÏÂÝÉÊ ÒÁÚÍÅÒ ÂÏÌÅÅ 300 ËÂÁÊÔ. åÓÌÉ ÌÉÎËÅÒ ÂÕÄÅÔ ÌÉÎËÏ×ÁÔØ ÉÈ ×ÓÅ × ËÁÖÄÙÊ ÐÒÏÅËÔ, ÎÉ ÏÄÉÎ ÐÒÏÅËÔ ÎÅ ×ÌÅÚÅÔ ÎÉ × ÏÄÉÎ ËÒÉÓÔÁÌÌ. :) á ÔÁË ÌÉÎËÅÒ ÂÅÒÅÔ ÔÏÌØËÏ ÎÕÖÎÙÅ ÆÁÊÌÙ ÉÚ ÂÉÂÌÉÏÔÅËÉ. ðÒÁ×ÄÁ Ñ ÜÔÏÊ ÂÉÂÌÉÏÔÅËÏÊ (É ×ÏÏÂÝÅ avr-libc) ÎÅ ÐÏÌØÚÕÀÓØ.
÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... áÜÒÏ×ÏÌÎÙ: ÍÅÎÔÏÌ É Ü×ËÁÌÉÐÔ ÄÌÑ ÎÏÓÁ, ÍÅÄ É ÌÉÍÏÎ ÄÌÑ ÒÏÔÁ!