Функцийн бүхэл өгөгдлийн төрөл. Хувьсагч. Postfix төрлийн тэмдэглэгээ


TO өгөгдөлЭнэ нь компьютерт цуглуулах, хадгалах, боловсруулах ажлыг автоматжуулах (тоо, тэмдэг, бит гэх мэт) хэлбэрээр танилцуулсан аливаа мэдээллийг хэлнэ.
Програм дахь өгөгдөл байж болно эх(програмын оролт дээр тохируулсан) эсвэл үр дүнг боловсруулах(дунд эсвэл амралтын өдөр).
Бүх өгөгдөл - хувьсагч ба тогтмолууд - тодорхой төрөлд хамаарна.
Өгөгдлийн төрөл бүр өөрийн гэсэн холбоотой байдаг утгын хүрээ(нэг утгын байтны тоо) ба хүчинтэй үйлдлүүд.

C/C++ хэл дээрх өгөгдлийн төрлүүдийг дараах байдлаар хуваадаг үндсэнТэгээд деривативууд.
Үндсэн төрлүүд нь:

  1. хүчингүй(хоосон төрөл),
  2. int(бүхэл тоон төрөл),
  3. хөвөх(бодит хөвөгч цэгийн тоо),
  4. давхар(давхар нарийвчлалтай хөвөгч цэгийн бодит тоо),
  5. тэмдэгт(тэмдэгтийн төрөл),
  6. боол- логик.

Нийлмэл төрлүүд

Бусад төрлийн өгөгдлийн хэрэглээг бий болгох үндсэнтөрөл + гэж нэрлэгддэг тодорхойлогч. Тодорхойлогч ашиглан стандарт төрлөөс үүсгэсэн өгөгдлийн төрлүүд гэж нэрлэдэг нийлмэл өгөгдлийн төрлүүд. C++ нь дөрвөн өгөгдлийн төрлийн тодорхойлогчийг тодорхойлдог:
  1. богино - богино;
  2. урт - урт;
  3. гарын үсэг зурсан;
  4. гарын үсэг зураагүй
Үүсмэл төрлүүд нь:
  • массив,
  • функцууд,
  • ангиуд,
  • тэмдэг,
  • холбоосууд,
  • бүтэц,
  • холбоод.

Тэмдэгтийн төрөл

Өгөгдлийн төрөл тэмдэгткомпьютерийн санах ойд үргэлж 1 байт эзэлдэг. Энэ нь ихэвчлэн тэмдэгтийн төрлийн утгыг санах ойн хэмжээ нь гарын 256 тэмдэгтийг хадгалахад шаардлагатай хэмжээтэй байдагтай холбоотой юм.
Тэмдэгтийн төрөл байж болно тэмдэгтэйэсвэл гарын үсэг зураагүй.
Гарын үсэг зурсан тоо хэмжээгээр гарын үсэг зурсан тэмдэгтТа утгуудыг -128-аас 127 хүртэлх мужид хадгалах боломжтой. Үүний дагуу хувьсагчийн утгууд нь дараах байдалтай байна. гарын үсэггүй тэмдэгт 0-ээс 255 хүртэл байж болно.
Өгөгдлийн төрөл Утгын хүрээ Хэмжээ
тэмдэгт -128...+127 1 байт
гарын үсэггүй тэмдэгт 0...255 1 байт
гарын үсэг зурсан тэмдэгт -128...127 1 байт

Тэмдэгтийн өгөгдөлтэй ажиллахдаа хэрэв илэрхийлэл агуулж байгаа бол гэдгийг санах хэрэгтэй ганц дүр, дотор нь хавсаргасан байх ёстой ганц ишлэл. Илэрхийлэлд ашигласан тэмдэгтүүдийн дараалал, өөрөөр хэлбэл тэмдэгт мөр давхар хашилтанд. Жишээ нь: "F", "3", "Иван", "235"

Бүхэл тоон төрөл

Өгөгдлийн төрөл intКомпьютерийн санах ойд 2, 4, 8 байт багтаамжтай. Энэ нь процессорын битийн хэмжээнээс хамаарна.
Анхдагч байдлаар, бүх бүхэл тоон төрлийг тэмдэгт, өөрөөр хэлбэл тодорхойлогч гэж үздэг гарын үсэг зурсан(тэмдэг) гэж заагаагүй байж болно.
Тодорхойлогч гарын үсэг зураагүй(тэмдэггүй) нь зөвхөн эерэг тоонуудыг төлөөлөх боломжийг олгодог.

Бүхэл тоон утгын мужууд

Өгөгдлийн төрөл Утгын хүрээ Хэмжээ (байт)
int
int гарын үсэг зурсан
long int гарын үсэг зурсан
-2147483648 ... 2147483647 4
unsigned int
unsigned long int
0 ... 4294967295 4
богино инт
гарын үсэг зурсан short int
-32768 ... 32767 2
гарын үсэггүй богино int 0... 65535 2
long long int \(-(2^{63}-1)...(2^{63}-1)\) 8
гарын үсэггүй урт
long int
\(0...(2^{64}-1)\) 8

Бодит төрөл

Компьютерийн санах ой дахь бодит тооны дотоод дүрслэл нь бүхэл тооны дүрслэлээс ялгаатай. Хөвөгч цэгийн тоог дараах байдлаар илэрхийлнэ экспоненциал хэлбэрээр. $$\pm mE\pm p$$ хаана м- мантиса (аравтын бутархай бүхий бүхэл тоо эсвэл бутархай тоо), Р- дараалал (бүхэл тоо). Экспоненциал хэлбэрээр байгаа тоог ердийн тогтмол цэгийн тэмдэглэгээ рүү хөрвүүлэхийн тулд мантисыг арав дахин дарааллын зэрэгт үржүүлэх хэрэгтэй. Жишээ нь: \(-6.42E+2=-6.42*10^(2)\ )

Бодит төрлүүдийн утгын хүрээ

Өгөгдлийн төрөл Утгын хүрээ Хэмжээ (байт)
хөвөх 3.4Д-38 ... 3.4Д+38 4
давхар 1.7E-308... 1.7E+308 8
урт давхар 3.4E-4932 ... 3.4E+4932 10

Mantissa-ийн урт нь тооны нарийвчлал, түүний хүрээний дарааллын уртыг тодорхойлдог.
Хөвөгч өгөгдөл нь 4 байт эзэлдэг бөгөөд үүнээс 1 хоёртын битийг тэмдэгт, 8 битийг илтгэгч, 23 битийг мантисад хуваарилдаг. Мантисын хамгийн чухал цифр нь үргэлж 1 байдаг тул үүнийг хадгалдаггүй.
Давхар төрлийн өгөгдөл нь 8 байт эзэлдэг бөгөөд тэдгээр нь дарааллын хувьд -11 бит, мантисын хувьд -52 биттэй байна.
Давхар төрлийн нэрний өмнөх урт төрлийн тодорхойлогч нь утгад 10 байт хуваарилагдсаныг заана.

Булийн төрөл

Төрөл хувьсагч боолзөвхөн хоёр утгыг авч болно үнэн(үнэн) эсвэл худлаа(худлаа). Ямар ч тэгээс бусад утгыг үнэн гэж тайлбарлах ба бүхэл тоонд хөрвүүлснээр 1 болно. Худал утгыг санах ойд 0 гэж илэрхийлнэ.

Хүчингүй гэж бичнэ үү

Энэ төрлийн утгын багц хоосон байна.
Хоосон төрлийг дараахь зүйлд ашигладаг.
  • утгыг буцаадаггүй функцүүдийн тодорхойлолт;
  • функцийн аргументуудын хоосон жагсаалтыг зааж өгөх;
  • заагчуудын үндсэн төрөл болгон;
  • төрөл хувиргах үйл ажиллагаанд .

Хувьсагчдыг зарлах

Хувьсагчнь тодорхой төрлийн утгыг хадгалдаг санах ойн нэртэй хэсэг юм.
Хувьсагч нь байна Нэр(танигч) ба утга учир.
Нэрутга хадгалагдаж буй санах ойн хэсэгт хандах үйлчилгээ үзүүлдэг.
Нэр(танигч) нь програмын хувьсагчийн нэр, функцын нэр эсвэл түлхүүр үгийг зааж өгдөг үсэг, тоо, доогуур зураасын цуглуулга юм. C/C++ хэл нь жижиг жижиг үсгийн мэдрэмжтэй байдаг (жишээ нь: нийлбэр ба нийлбэрийг хоёр өөр хувьсагч гэж үзнэ).
Хаана, төрөл– хувьсагчийн утгыг (програмын объект болгон) хадгалахад зориулагдсан санах ойн хэмжээг (байтын тоо) тодорхойлох түлхүүр үг (int – бүхэл тоо, float, double – бодит, char – симбол, bool – логик);
Нэрөвөрмөц танигчкомпьютерийн санах ойд байгаа програмын объектын симбол хаягийг тодорхойлсон хувьсагч;
санаачлагч– тайлбарт байхгүй байж болох хувьсагчийн анхны утга.
Жишээ нь: Нэг төрлийн хувьсагчдыг ","-ээр тусгаарлаж бүлэглэж болно. Хувьсагчдын тайлбар янз бүрийн төрөл"-ээр тусгаарлагдсан; "
Си/С++ хэл дээрх хувьсагчдыг хаана зарласанаас хамааран гурван ангилалд хувааж болно.
  1. локал - функц дотор зарлагдсан бөгөөд зөвхөн үүн дээр ашиглах боломжтой;
  2. глобал - бүх функцүүдийн өмнө тайлбарласан бөгөөд програмын хаанаас ч хандах боломжтой;
  3. функцүүдийн албан ёсны параметрүүдийг функцийн параметрүүдийн жагсаалтад тайлбарласан болно.
Жишээ:

Бүхэл тооны төрөл (int)

Төрөл бүрийн хэмжээ intстандартаар тодорхойлогдоогүй боловч компьютер болон хөрвүүлэгчээс хамаарна.

16 битийн процессорын хувьд энэ төрлийн утгуудад 2 байтыг хуваарилдаг.

32 битийн хувьд - 4 байт.

Тодорхойлогч богинотөрлийн нэр нь процессорын битийн гүнээс үл хамааран тоонд 2 байт хуваарилах ёстойг хөрвүүлэгчид зааж өгөхөөс өмнө.

Тодорхойлогч уртбүхэл тоо 4 байт эзэлнэ гэсэн үг.

Тэгэхээр 16 битийн компьютер дээр int болон short int-ийн эквивалентууд байдаг

мөн 32 бит дээр - int ба long int.

Дотоод төлөөлөлбүхэл төрлийн утгууд - хоёртын код дахь бүхэл тоо. Тодорхойлогчийг ашиглах үед гарын үсэг зурсанТооны хамгийн чухал битийг гарын үсэгтэй гэж тайлбарладаг (0 нь эерэг тоо, 1 нь сөрөг тоо). Тодорхойлогч гарын үсэг зураагүйХамгийн чухал бит нь тухайн тооны кодын нэг хэсэг гэж тооцогддог тул зөвхөн эерэг тоонуудыг төлөөлөх боломжийг олгодог. Тиймээс int утгын хүрээ нь тодорхойлогчоос хамаарна. IBM PC-тэй нийцтэй компьютерт зориулсан төрөл бүрийн тодорхойлогч бүхий бүхэл төрлийн утгуудын утгын хүрээг "Энгийн өгөгдлийн төрлүүдийн утгын хүрээ" хүснэгтэд өгсөн болно.

Анхдагч байдлаар, бүх бүхэл тооны төрлийг гарын үсэг зурсан гэж үздэг бөгөөд энэ нь гарын үсэг зурсан тодорхойлогчийг орхигдуулж болно гэсэн үг юм.

Хөтөлбөрт олдсон тогтмолуудыг төрлөөс нь хамааруулан нэг төрлийг оноож өгдөг. Хэрэв ямар нэг шалтгааны улмаас энэ нь програмист тохирохгүй байвал та L, l (урт) болон U, u (гарын үсэггүй) дагаваруудыг ашиглан шаардлагатай төрлийг тодорхой зааж өгч болно. Жишээлбэл, тогтмол 32L нь урт, 4 байт багтаамжтай байх болно. Та L ба U дагаварыг нэгэн зэрэг ашиглаж болно, жишээлбэл, 0x22UL эсвэл 05Lu.

Анхаарна уу. short int, long int, signed int, unsigned int гэсэн төрлүүдийг товчилбол short, long, signed, unsigned гэж тус тус авч болно.

Тэмдэгтийн төрөл (тэмдэгт)

Тэмдэгтийн төрлийн утгыг тухайн компьютерт зориулсан тэмдэгтийн багцаас дурын тэмдэгтийг багтаахад хангалттай тооны байт хуваарилдаг бөгөөд энэ нь тухайн төрлийн нэрийг тодорхойлдог. Энэ нь ихэвчлэн 1 байт байна. Тэмдэгтийн төрөл нь бусад бүхэл тоонуудын нэгэн адил гарын үсэгтэй эсвэл тэмдэггүй байж болно. Гарын үсэг зурсан утгууд нь -128-аас 127 хүртэлх мужид утгуудыг хадгалах боломжтой. Тэмдэглэгдээгүй тодорхойлогчийг ашиглан утгууд нь 0-ээс 255 хооронд хэлбэлзэж болно. Энэ нь 256 тэмдэгт бүхий ASCII тэмдэгтийн багцад ямар ч тэмдэгт хадгалахад хангалттай. Бүхэл тоог хадгалахад char төрлийн утгуудыг ашигладаг.



Өргөтгөсөн тэмдэгтийн төрөл (wchar_t)

Төрөл wchar_tкодлоход 1 байт хангалттай биш тэмдэгтүүдтэй ажиллахад зориулагдсан. Жишээлбэл, Юникод. Энэ төрлийн хэмжээ нь хэрэгжилтээс хамаарна; Дүрмээр бол энэ нь төрөлтэй тохирч байна богино. wchar_t төрлийн тогтмол мөрүүдийг L угтвараар бичдэг, жишээ нь L“Gates”.

Булийн төрөл (bool)

Булийн утга нь зөвхөн утгыг авч болно үнэнТэгээд худлаа, эдгээр нь хадгалагдсан үгс юм. Худал утгыг илэрхийлэх дотоод хэлбэр нь 0 (тэг) байна. Бусад бүх утгыг үнэн гэж тайлбарлана. Бүхэл тоон төрөл рүү хөрвүүлэх үед үнэн 1 гэсэн утгатай.

Хөвөгч цэгийн төрлүүд (хөвөгч, давхар, урт давхар)

C++ стандарт нь бодит утгыг хадгалах гурван төрлийн өгөгдлийн төрлийг тодорхойлдог: float, double, long double.

Хөвөгч цэгийн өгөгдлийн төрлүүд санах ойд бүхэл тоон өгөгдлийн төрлөөс өөрөөр хадгалагддаг. Бодит тооны дотоод дүрслэл нь хоёр хэсгээс бүрдэнэ. мантиссаТэгээд захиалга.

IBM PC-тэй нийцтэй компьютерууд дээрх төрлийн утгууд хөвөх 4 байт эзэлдэг бөгөөд үүнээс нэг хоёртын цифрийг хуваарилдаг mantissa тэмдгийн дор, 8 оронтой дарааллаарболон 23 мантисын доор. Мантиса нь 1.0-ээс их боловч 2.0-ээс бага тоо юм.Мантисын тэргүүлэх орон нь үргэлж 1 байдаг тул үүнийг хадгалдаггүй.

Төрөл бүрийн хувьд давхар, 8 байт эзэлдэг, 11 ба 52 битийг тушаал, мантисад тус тус хуваарилдаг. Мантисын урт нь тооны нарийвчлалыг тодорхойлдог бөгөөд экспонентийн урт нь түүний хүрээг тодорхойлдог.Бичлэгийн төгсгөлд байгаа хүснэгтээс харахад float болон long int утгуудад ижил тооны байт хуваарилагдсан тул тэдгээрийн зөвшөөрөгдөх утгуудын хүрээ ихээхэн ялгаатай байна. дотоод төлөөллийн маягтын улмаас.

Тодорхойлогч урттөрлийн нэрийн өмнө давхарутгад нь 10 байт хуваарилагдсан болохыг харуулж байна.

Хөвөгч цэгийн тогтмолууд нь анхдагчаар давхар төрөлтэй байдаг. Та F, f (хөвөгч) болон L, l (урт) дагаваруудыг ашиглан тогтмолын төрлийг тодорхой зааж өгч болно.

Жишээлбэл, 2E+6L тогтмол нь long double төрлийн, 1.82f тогтмол нь float төрлийн байх болно.

Төрөл бүрийн платформд зориулагдсан программ бичихдээ тухайн төрлийнх нь хэмжээний талаар таамаг дэвшүүлж болохгүй int.Үүнийг авахын тулд та үйлдлийн хэмжээг ашиглах ёстой бөгөөд үр дүн нь байт дахь төрлийн хэмжээ юм.

Жишээ нь, төлөө үйлдлийн систем MS-DOS sizeof (int) үр дүн нь 2, харин Windows 98 эсвэл OS/2-ийн хувьд үр дүн нь 4 болно.

ANSI стандарт нь үндсэн төрлүүдийн утгын мужийг заагаагүй бөгөөд зөвхөн тэдгээрийн хэмжээ хоорондын хамаарлыг тодорхойлдог, жишээлбэл:

sizeof(хөвөгч) ≤ slzeof(давхар) ≤ sizeof(урт давхар)
sizeof(char) ≤ slzeof(богино) ≤ sizeof(int) ≤ sizeof(урт)

Анхаарна уу.Бүхэл тооны төрлүүдийн зөвшөөрөгдөх хамгийн бага ба хамгийн их утгууд нь хэрэгжилтээс хамааралтай бөгөөд толгой файлд өгөгдсөн болно (), бодит төрлүүдийн шинж чанарууд - файлд (), түүнчлэн numeric_limits ангийн загварт

хүчингүй гэж бичнэ

Жагсаалтаас гадна хэлний үндсэн төрлүүд нь хоосон төрлийг агуулдаг боловч энэ төрлийн утгуудын багц нь хоосон байна. Энэ нь утгыг буцаадаггүй функцуудыг тодорхойлох, функцын аргументуудын хоосон жагсаалтыг заагчийн үндсэн төрөл болгон зааж өгөх, төрөл дамжуулах үйлдлүүдэд ашигладаг.

Янз бүрийн төрөлТооцооллын хурд, санах ойн хэмжээ нь сонголтоос хамаардаг тул программист тодорхой тоног төхөөрөмжийн чадавхийг хамгийн үр дүнтэй ашиглах боломжийг олгохын тулд мэдээллийн дүрслэл, нарийвчлалын хувьд ялгаатай бүхэл ба бодит төрлүүдийг нэвтрүүлсэн. төрөл. Гэхдээ нэг төрлийн компьютерт тохируулсан програм нь бусад платформд зөөврийн биш байж болох тул ерөнхийдөө та эдгээрээс хамааралтай байхаас зайлсхийх хэрэгтэй. тодорхой шинж чанаруудөгөгдлийн төрлүүд.

Төрөл Утгын хүрээ Хэмжээ (байт)
боол үнэн ба худал
гарын үсэг зурсан тэмдэгт -128 … 127
гарын үсэггүй тэмдэгт 0 … 255
гарын үсэг зурсан short int -32 768 … 32 767
гарын үсэггүй богино int 0 … 65 535
long int гарын үсэг зурсан -2 147 483 648 … 2 147 483 647
unsigned long int 0 … 4 294 967 295
хөвөх 3.4e-38 … 3.4e+38
давхар 1.7e-308 … 1.7C+308
урт давхар 3.4e-4932 … 3.4e+4932

Програмын бүтэц

C++ программ нь дараахь зүйлсээс бүрдэнэ функцууд, тодорхойлолтуудТэгээд урьдчилсан процессорын удирдамж. Функцуудын аль нэг нь нэртэй байх ёстой гол. Програмын гүйцэтгэл нь энэ функцийн эхний мэдэгдлээс эхэлдэг. Хамгийн энгийн функцийн тодорхойлолт нь дараах форматтай байна.

Ихэвчлэн функцийг утгыг тооцоолоход ашигладаг тул функцийн нэрний өмнө түүний төрлийг зааж өгдөг. Функцуудын талаархи хамгийн чухал мэдээллийг доор харуулав.

  • Хэрэв функц утга буцаахгүй бол хүчингүй төрлийг зааж өгнө:
  • функцийн бие нь блок бөгөөд тиймээс буржгар хаалтанд бэхлэгдсэн;
  • функцуудыг үүрлэх боломжгүй;
  • Бүх мэдэгдэл цэг таслалаар төгсдөг (нийлмэл өгүүлбэрээс бусад).

Үндсэн, fl, f2 функцуудыг агуулсан програмын бүтцийн жишээ:

Хөтөлбөр нь хэд хэдэн хэсгээс бүрдэж болно модулиуд(эх файлууд).

C++ хэл дээрх оролт гаралтын талаархи тэмдэглэл

C++ хэл нь оролт/гаралтын суулгацгүй бөгөөд үүнийг стандарт номын санд агуулагдах функц, төрөл, объектыг ашиглан гүйцэтгэдэг.

Хоёр аргыг ашигладаг: Си хэлнээс удамшсан функцууд болон C++ объектууд.

С загварын үндсэн I/O функцууд:

int scanf (const char* формат, ...) // оролт
int printf(const char* формат, ...) // гаралт

Тэд форматын мөрийн дагуу дурын тооны утгын форматтай оролт, гаралтыг гүйцэтгэдэг. Форматын мөр нь гаралт дээрх урсгал руу (дэлгэцэн дээр) хуулсан эсвэл оролт дээрх урсгалаас (гараас) хүссэн тэмдэгтүүд болон % тэмдгээр эхэлсэн хувиргах үзүүлэлтүүдийг агуулдаг бөгөөд эдгээр нь оролтын тодорхой утгуудаар солигддог. болон гаралт.

Си маягийн I/O функцийг ашигладаг жишээ програм:

#оруулна
int main() (
int i;
printf("Бүхэл тоо оруулна уу\n");
scanf("%d", &i);
printf("Та %d тоог оруулсан байна, баярлалаа!", i);
буцаах 0;
}

Энэ програмын эхний мөр нь программд ашигласан оролт/гаралтын функцүүдийн тайлбарыг агуулсан толгой файлыг програмын текстэнд оруулдаг урьдчилсан процессорын заавар юм. энэ тохиолдолдөнцгийн хаалт нь хэлний элемент). Бүх препроцессорын заавар нь # тэмдгээр эхэлдэг.

Гурав дахь мөр нь i нэртэй бүхэл тоон төрлийн хувьсагчийн тайлбар юм.

4-р мөрөнд байгаа printf функц нь "Бүхэл тоо оруулна уу" гэсэн мөрийг хэвлээд дараах руу очно шинэ мөрзугтах дарааллын дагуу \n. Scanf функц нь гараас оруулсан бүхэл тоог i хувьсагч (тэмдэг & тэмдэг нь хаягийг авах үйлдлийг илэрхийлнэ)-д хадгалдаг ба дараах мэдэгдэл нь түүнд заасан мөрийг харуулж, хөрвүүлэх үзүүлэлтийг энэ тооны утгаар солино.

C++ ангийн номын сан ашигладаг програм:

#оруулна
int main() (
int i;
cout<< "Введите целое число\n"; cin >> i;
cout<< "Вы ввели число " << i << ", спасибо!";
буцаах 0;
}

Толгой файл нь оролт/гаралтыг удирдах ангиудын багцын тайлбарыг агуулна. Энэ нь стандарт урсгалын объектуудыг тодорхойлдог cinгарны оролт болон coutхаруулах, түүнчлэн урсгалд байрлуулах үйл ажиллагаа< < и чтения из потока >>.

Та оролт/гаралтыг зохион байгуулах хоёр аргыг ашиглаж болох боловч тэдгээрийг нэг программд холихыг зөвлөдөггүй.

Програмчлалын хувьд өгөгдлийн төрөл гэдэг нь утгуудын багц ба тэдгээрт хэрэглэж болох үйлдлийн багц гэсэн хоёр багцын цуглуулга юм. Жишээлбэл, натурал тоонуудын төгсгөлтэй багцаас бүрдэх сөрөг бус бүхэл тоо өгөгдлийн төрөлд нэмэх (+), үржүүлэх (*), бүхэл тоо хуваах (/), үлдэгдэл (%), хасах (−) үйлдлүүдийг хэрэглэж болно.

Програмчлалын хэл нь ихэвчлэн анхдагч өгөгдлийн төрлүүдтэй байдаг - програмчлалын хэлээр үндсэн суулгасан нэгж болгон өгдөг. C++ хэл дээр хэлийг бүтээгч ийм төрлийг үндсэн төрлүүд гэж нэрлэдэг. C++ хэл дээрх үндсэн төрлүүд нь:

  • boolean (bool);
  • тэмдэгт (жишээ нь тэмдэгт);
  • int (жишээ нь int);
  • хөвөх цэг (жишээ нь, хөвөх);
  • тооллого (программист тодорхойлсон);
  • хүчингүй.

Жагсаалтаас гадна дараахь төрлүүдийг бүтээсэн болно.

  • харуулах (жишээ нь, int*);
  • массив (жишээ нь char);
  • лавлагаа (жишээлбэл, давхар&);
  • бусад бүтэц.

Литерал (жишээ нь, 1, 2.4F, 25e-4, 'a' гэх мэт) гэсэн ойлголт руу шилжье: литерал гэдэг нь програмын эх кодын тогтмол утгыг илэрхийлдэг бичилт юм. Өөрөөр хэлбэл литерал гэдэг нь зүгээр л програмын код дахь ямар нэг төрлийн объектын (утга) дүрслэл юм. C++ нь бүхэл тоо, хөвөгч цэг, тэмдэгт, логик, мөрт утгыг бичих чадвартай.

Бүхэл тоон төрлийн литералыг дараах байдлаар бичиж болно.

  • 10 дахь тооны систем. Жишээлбэл, 1205;
  • 0 + тоо форматтай 8 дахь тооллын систем. Жишээлбэл, 0142;
  • 0x + тоо форматтай 16 дахь тооллын систем. Жишээлбэл, 0x2F.

24, 030, 0x18 - эдгээр нь бүгд өөр өөр тооны систем дэх ижил тооны бичлэгүүд юм.
Хөвөгч цэгийн тоог бичихдээ цэгийн тэмдэглэгээг ашиглана: 0.1, .5, 4.
экспоненциал тэмдэглэгээ - 25e-100. Ийм тэмдэглэлд хоосон зай байх ёсгүй.

Бид үсгээр бичигдсэн утгуудыг холбож болох нэрийг хувьсагч гэж нэрлэдэг. Хувьсагч гэдэг нь хаягаар өгөгдөлд хандах боломжтой санах ойн нэрлэсэн эсвэл өөр хаяглагдсан хэсэг юм. Энэ өгөгдөл нь программыг гүйцэтгэх явцад тодорхой байдлаар санах ойд бичигдэж, дахин бичиж, устгагддаг. Хувьсагч нь танд хүссэн үедээ өгөгдөлд хандах, шаардлагатай бол өөрчлөх боломжийг олгодог. Хувьсагчийн нэрнээс гаргаж авч болох өгөгдлийг хувьсагчийн утга гэнэ.
Програмд ​​хувьсагчийг ашиглахын тулд үүнийг зарлах шаардлагатай бөгөөд шаардлагатай бол түүнийг тодорхойлж болно (= эхлүүлсэн). Програмын текст дэх хувьсагчийн зарлал нь үндсэн төрөл ба зарлагч гэсэн 2 хэсгээс бүрдэх ёстой. Тодорхойлогч болон эхлүүлэгч нь нэмэлт хэсгүүд юм:

Const int жишээ = 3; // энд const нь тодорхойлогч // int нь үндсэн төрөл // жишээ нь хувьсагчийн нэр // = 3 - эхлүүлэгч.

Хувьсагчийн нэр нь латин цагаан толгойн үсэг (жижиг ба том үсэг), тоо ба/эсвэл доогуур зурааснаас бүрдэх тэмдэгтүүдийн дараалал боловч эхний тэмдэгт нь тоо байж болохгүй. Хувьсагчийн нэрийг сонгох хэрэгтэй бөгөөд ингэснээр юу хадгалагдаж байгааг таахад хялбар байх ёстой, жишээлбэл, "сарын төлбөр". Тэмдэглэл болон практикт бид хувьсагчдыг бүртгэх дүрэмд CamelCase тэмдэглэгээг ашиглах болно. Хувьсагчийн нэр нь тухайн хэлэнд хадгалагдсан үгстэй давхцаж болохгүй; ийм үгсийн жишээ нь: if, while, function, goto, switch гэх мэт.

Хувьсагчийн нэрнээс гадна тунхаглагч нь нэмэлт тэмдэгт агуулж болно:

  • * - заагч; нэрний өмнө;
  • *const - тогтмол заагч; нэрний өмнө;
  • & - холбоос; нэрний өмнө;
  • - массив; нэрний дараа;
  • () - функц; нэрний дараа.

Анхдагч нь хувьсагчийн утгыг зарласны дараа шууд тодорхойлох боломжийг олгодог. Эхлэгч нь тэгш байдлын литерал (=)-ээр эхэлж, дараа нь хувьсагчийн утгыг тохируулахын тулд үргэлжлүүлнэ. Ерөнхийдөө C++ хэл дээрх тэнцүү тэмдэг нь хуваарилалтын үйлдлийг илэрхийлдэг; түүний тусламжтайгаар та хувьсагчийн утгыг тохируулах, өөрчлөх боломжтой. Энэ нь янз бүрийн төрлүүдийн хувьд өөр байж болно.

Тодорхойлогч нь төрлөөс бусад нэмэлт шинж чанаруудыг зааж өгдөг. Жишээнд өгөгдсөн const тодорхойлогч нь хувьсагчийн утгын дараагийн өөрчлөлтийг хориглох боломжийг олгодог. Ийм хувиршгүй хувьсагчдыг тогтмол эсвэл тогтмол гэж нэрлэдэг.

Тогтмолыг эхлүүлэхгүйгээр зарлах нь логик шалтгааны улмаас ажиллахгүй:

Const int EMPTY_CONST; // алдаа, тогтмол хувьсагчийг эхлүүлээгүй const int ЖИШЭЭ = 2; // 2 утгатай тогтмол ЖИШЭЭ = 3; // алдаа, тогтмол хувьсагчид утга оноох оролдлого

Тогтмол тоонуудыг нэрлэхдээ зөвхөн том үсгээр, доогуур зураастай үгсийг тусгаарладаг заншилтай байдаг.

C++ хэл дээрх үндсэн өгөгдлийн төрлүүд

Төрөл бүрийг судлахдаа уншигч өгөгдлийн төрлийг тодорхойлох талаар мартаж болохгүй.

1. Бүхэл тооны төрөл (char, short (int), int, long (int), long long)

Нэрнээс нь харахад утгуудын багц нь бүхэл тооноос бүрддэг гэдгийг ойлгоход хялбар байдаг. Мөн жагсаасан төрөл бүрийн утгын багцыг гарын үсэг зурсан эсвэл гарын үсэг зураагүй байж болно. Олонлогт агуулагдах элементүүдийн тоо нь тухайн төрлийн утгыг хадгалахад ашигласан санах ойн хэмжээнээс хамаарна. Жишээлбэл, char төрлийн хувьсагчийн хувьд 1 байт санах ой хуваарилагдсан тул нийт элементүүд нь:

  • 2 8N = 2 8 * 1 = 256, энд N нь утгыг хадгалах санах ойн хэмжээг байтаар илэрхийлнэ.

Энэ тохиолдолд боломжтой бүхэл тоонуудын хүрээ дараах байдалтай байна.

  • - тэмдэггүй тэмдэгтийн хувьд
  • [-128..127] - гарын үсэг зурсан тэмдэгтийн хувьд

Анхдагчаар бүхэл тоон хувьсагчийг тэмдэглэгдсэн гэж үзнэ. Хувьсагч нь тэмдэггүй байх ёстойг кодонд зааж өгөхийн тулд зүүн талд байгаа үндсэн төрөлд гарын үсэг зурсан атрибут нэмж оруулсан болно. гарын үсэг зураагүй:

Гарын үсэг зураагүй урт утгууд; // бүхэл тоо (урт) тэмдэггүй төрлийг заана.

Жагсаалтад орсон төрлүүд нь зөвхөн хадгалахад шаардагдах санах ойн хэмжээгээр ялгаатай. C++ хэл нь машинаас ихээхэн хамааралтай байдаг тул хэлний стандарт нь зөвхөн дараах нөхцлийг баталгаажуулдаг.

  • 1 = тэмдэгтийн хэмжээ ≤ богино хэмжээ ≤ int хэмжээ ≤ урт хэмжээ.

Ихэвчлэн төрлүүдийн хэмжээ нь дараах байдалтай байна: char - 1, богино - 2, int - 4, урт -8, урт урт - 8 байт.

Та бүхэл төрлийн утгуудтай арифметик үйлдлүүдийг хийж болно: +, -, *, /, %; харьцуулах үйлдлүүд: ==, !=,<=, <, >, >=; битийн үйлдлүүд: &, |, xor,<<, >>.
Нэмэх, үржүүлэх, хасах, харьцуулах гэх мэт ихэнх үйлдлүүдийг ойлгоход хялбар байдаг. Заримдаа арифметик үйлдлүүдийг хийсний дараа үр дүн нь утгын хүрээнээс гадуур байж болно; Энэ тохиолдолд програм алдаа гаргах болно.
Бүхэл тоонд хуваах (/) нь нэг бүхэл тоонд хуваагдсан бүхэл тоог олно. Жишээлбэл:

  • 6 / 4 = 1;
  • 2 / 5 = 0;
  • 8 / 2 = 4.

Хувийн тэмдэг (%) нь хоёр бүхэл тооны хуваагдлын үлдэгдлийг тодорхойлох үйлдлийг илэрхийлнэ.

  • 6 % 4 = 2;
  • 10 % 3 = 1.

Ойлгоход илүү төвөгтэй үйлдлүүд нь битийн үйлдлүүд юм: & (AND), | (OR), xor (онцгой OR),<< (побитовый сдвиг влево), >> (битийн баруун тийш шилжих).

AND, OR болон XOR битийн үйлдлүүд нь мэдээллийн бит бүрт харгалзах логик үйлдлийг хэрэгжүүлдэг:

  • 1 10 = 01 2
  • 3 10 = 11 2
  • 1 10 & 3 10 = 01 2 & 11 2 = 01 2
  • 1 10 | 3 10 = 01 2 | 11 2 = 11 2
  • 1 10 хор 3 10 = 01 2 хор 11 2 = 10 2

Зургийг боловсруулахдаа өнгөт 3 сувгийг ашигладаг: улаан, цэнхэр, ногоон - мөн ил тод байдал, эдгээр нь int хувьсагчид хадгалагддаг, учир нь суваг бүр 0-ээс 255 хүртэлх утгын мужтай байна. Арван арвантын тооллын системд тодорхой утгыг дараах байдлаар бичнэ: 0x180013FF; Дараа нь 18 16 утга нь улаан суваг, 00 16 - цэнхэр, 13 16 - ногоон, FF - альфа суваг (ил тод байдал) -тай тохирч байна. Ийм бүхэл тооноос тодорхой сувгийг сонгохын тулд суваг гэж нэрлэгддэг сувгийг ашигладаг. маск, бидний сонирхож буй байрлалууд нь F 16 эсвэл 1 2. Өөрөөр хэлбэл, цэнхэр сувгийн үнэ цэнийг тодруулахын тулд та маск ашиглах ёстой, i.e. битээр БА:

Int blue_channel = 0x180013FF & 0x00FF0000;

Үүний дараа үүссэн утгыг шаардлагатай тооны битээр баруун тийш шилжүүлнэ.

Битийн шилжилт нь үйл ажиллагааны баруун талд заасан тооны хоёртын оронтой тоогоор зүүн эсвэл баруун тийш шилжинэ. Жишээлбэл, char төрлийн 39 тоог хоёртын системд дараах байдлаар бичнэ: 00100111. Дараа нь:

Char ikiтын тоо Жишээ = 39; // 00100111 тэмдэгтийн үр дүн = хоёртын жишээ<< 2; // сдвигаем 2 бита влево, результат: 10011100

Хэрэв хувьсагч нь тэмдэггүй төрөл байвал үр дүн нь 156 тоо байх бөгөөд гарын үсэг зурсан хувьсагч -100-тай тэнцүү байна. Тэмдэглэсэн бүхэл тооны төрлүүдийн хувьд битийн дүрслэлийн хамгийн чухал бит дэх нэгж нь тоо сөрөг байгааг илтгэнэ гэдгийг анхаарна уу. Энэ тохиолдолд бүгдээс бүрдсэн хоёртын хэлбэрийн утга нь -1-тэй тохирч байна; хэрэв 1 нь зөвхөн хамгийн чухал оронтой, үлдсэн цифрүүд нь тэг байвал ийм тоо нь тодорхой төрлийн хувьд хамгийн бага утгатай байна: char-ийн хувьд энэ нь -128 байна.

2. Хөвөгч цэгийн төрөл (хөвөгч, давхар (хөвөгч))

Хөвөгч цэгийн утгуудын багц нь бодит тоонуудын дэд олонлог боловч бодит тоо бүрийг хоёртын тоогоор илэрхийлэх боломжгүй бөгөөд энэ нь заримдаа тэнэг алдаа гаргахад хүргэдэг:

Хөвөгч утга = 0.2; утга == 0.2; // алдаа, энд байгаа утга 0.2-той тэнцэхгүй.

Хөвөгч цэгийн хувьсагчтай ажиллахдаа программист тэгш байдал эсвэл тэгш бус байдлын тестийг ашиглах ёсгүй бөгөөд үүний оронд тодорхой интервалд унах тестийг ихэвчлэн ашигладаг.

Утга - 0.2< 1e-6; // ok, подбирать интервал тоже нужно осторожно

Хөвөгч цэгийн төрөл нь харьцуулах үйлдлээс гадна бодит тоонуудтай математик үйлдлүүдтэй бүрэн нийцэх 4 арифметик үйлдлийг дэмждэг.

3. Boolean (логик) төрөл (bool)

Үнэн (үнэн) ба худал (худал) гэсэн хоёр утгаас бүрдэнэ. Энэ төрлийн хувьсагчтай ажиллахын тулд логик үйлдлүүдийг ашигладаг: ! (БИШ), == (тэгш байдал), != (тэгш бус байдал), && (логик БА), || (логик OR). Үйлдэл бүрийн үр дүнг харгалзах үнэний хүснэгтээс олж болно. Жишээлбэл:

X Y XOR0 0 0 0 1 1 1 0 1 1 1 0

4. Тэмдэгтийн төрөл (char, wchar_t)

Char төрөл нь зөвхөн бүхэл тоо биш (ихэвчлэн энэ төрлийг байт гэж нэрлэдэг), мөн тэмдэгтийн төрөл бөгөөд хүснэгтээс тэмдэгтийн дугаарыг ASCII тэмдэгт болгон хадгалдаг. Жишээлбэл, 0x41 код нь 'A' тэмдэгт, 0x71 - 't' тэмдэгттэй тохирч байна.

Заримдаа ASCII хүснэгтэд тогтоогдоогүй тэмдэгтүүдийг ашиглах шаардлагатай болдог тул хадгалахад 1 байтаас илүү хугацаа шаардагддаг. Тэдний хувьд өргөн зан чанар байдаг (wchar_t).

5.1. Массив

Массивууд нь ижил төрлийн элементүүдийн дараалсан багцыг хадгалах боломжийг олгодог. Массив нь санах ойд зэргэлдээ блок хэлбэрээр хадгалагддаг тул та түүний хэмжээг заахгүйгээр массивыг зарлах боломжгүй. Массивыг зарлахын тулд хувьсагчийн нэрний ард түүний хэмжээг харуулсан дөрвөлжин хаалт () бичнэ. Жишээлбэл:

Int myArray; // Бүхэл тоон төрлийн 5 элементийн массив

Массивыг эхлүүлэхийн тулд утгуудыг хаалтанд бичнэ. Та зөвхөн хувьсагчийг зарлах үед л ийм аргаар эхлүүлж болно. Дашрамд хэлэхэд, энэ тохиолдолд массивын хэмжээг зааж өгөх шаардлагагүй:

Int odds = (1, 3, 7, 9, 11); // Массивыг 5 утгаар эхлүүлсэн

Массив (массив элемент) дахь тодорхой утгад хандахын тулд элементийн дугаарыг (тоо нь 0-ээс эхэлнэ) зааж өгөх индексийн хандалтын үйлдлийг () ашиглана уу. Жишээлбэл:

Боломж; // массивын эхний элемент рүү нэвтрэх. 1 магадлалыг буцаана; // гурав дахь элемент рүү нэвтрэх. 7 odds = 13 утгыг буцаана; // Массивын магадлалын 5-р элементэд шинэ утга оноох; // хандалтын алдаа

5.3. Мөр

Мөр бичихдээ програмистууд тэмдэгтүүдийн дараалсан цуваа (массив) гэсэн санааг ашигладаг. Мөрийн төгсгөлийг тодорхойлохын тулд мөрийн төгсгөлийн тусгай тэмдэгтийг ашиглана уу: '\0'. Урвуу зураас болон таних тэмдэгтээс бүрдэх эдгээр тусгай тэмдэгтүүдийг хяналтын эсвэл зугтах тэмдэгтүүд гэж нэрлэдэг. Түүнчлэн, жишээлбэл, '\n' - шинэ мөрийн эхлэл, '\t' - хүснэгт. Мөрт урвуу налуу зураас бичихийн тулд escape ашигладаг - өөр налуу зураасыг ‘\’ тэмдгийн өмнө байрлуулна. Хашилт бичихэд мөн зугтахыг ашигладаг.

Мөр хувьсагч үүсгэцгээе:

Char textExample = ('T', 'e', ​​'s', 't', '\0'); // "Тест" мөр бичигдсэн

Мөр эхлүүлэхэд хялбаршуулсан тэмдэглэгээ байдаг:

Char textExample = "Туршилт"; // Сүүлийн тэмдэгт бичигдээгүй ч хэмжээ нь 5 хэвээр байна

Дэлгэрэнгүй мэдээллийг оруулахгүйгээр өөр нэг хэрэгтэй өгөгдлийн төрөл болох мөр байна. Мөр
Жишээлбэл, энэ төрлийг нэмж болно:

Сайн байна уу мөр = "Сайн уу,"; мөрийн нэр = "Макс!"; string hello_name = сайн уу + нэр; // "Сайн уу, Макс!"

6. Холбоос

Int a = 2; // "a" хувьсагч 2 утгыг зааж байна int &b = a; // "b" хувьсагч нь "a"-тай ижил газрыг зааж байна b = 4; // b-ийн утгыг өөрчилснөөр программист a-ийн утгыг өөрчилнө. Одоо a = 4 int & c = 4; // алдаа, та үүнийг хийх боломжгүй, учир нь лавлагаанд утга оноох боломжгүй

7. Индекс

Энэ төрлийн өгөгдлийн төрлийг ойлгохын тулд та энэ төрлийн олон утгууд нь өгөгдөл эхэлдэг санах ойн эсийн хаягууд гэдгийг санах хэрэгтэй. Заагч нь нэмэх (+), хасах (-) болон ялгах (*) үйлдлийг дэмждэг.

0x0 хаягууд нь заагч хоосон байна гэсэн үг, өөрөөр хэлбэл. ямар ч өгөгдлийг заадаггүй. Энэ хаяг нь өөрийн гэсэн утгатай - NULL:

Int *nullPtr = NULL; // хоосон заагч

Бүхэл тоо эсвэл өөр хаягтай хаяг нэмэх, хасах нь үүнийг зөвшөөрдөг
Хөтөлбөрт ашиглах боломжтой санах ойг тойрон хөдөлнө.

Заагч дээр хадгалагдсан хаягаас эхлэн өгөгдлийг сэргээх үйлдлийг dereferencing (*) гэж нэрлэдэг. Програм нь шаардлагатай тооны санах ойн нүдийг уншиж, санах ойд хадгалагдсан утгыг буцаана.

Int valueInMemory = 2; // бүхэл тоон төрлийн хувьсагч тохируулах int *somePtr = // хувьсагчийн хаягийг энд хуулах & - somePtr хувьсагчийн хаягийг буцаана; // санах ойн нүдний хаяг, жишээлбэл, 0x2F *somePtr; // утгыг 4 нүдэнд хадгална: 0x2F, 0x30, 0x31, 0x32

Хуулбарлах үйлдэлтэй синтаксийн хувьд ижил үүрэг даалгавар өгөх үйлдэл нь заагчдад боломжгүй. Өөрөөр хэлбэл, та өөр заагчийн хаяг эсвэл хувьсагчийн хаягийг хуулж болох боловч хаягийн утгыг өөрөө тодорхойлох боломжгүй.

Заагч нь бусад төрлийн хувьсагчийн утгуудын адил санах ойд хадгалагддаг бөгөөд 4 байт эзэлдэг тул та заагч руу заагч үүсгэх боломжтой.

8. Шилжүүлэх

Тооцоолол нь програмистын тодорхойлсон цорын ганц үндсэн төрөл юм. Ерөнхийдөө тооллого нь нэрлэсэн бүхэл тоон тогтмолуудын дараалсан багц бөгөөд тооллын нэр нь үндсэн төрөл юм.

Тоон өнгө (улаан, цэнхэр, ногоон);

Анхдагч байдлаар, УЛААН = 0, ЦЭНХЭР = 1, НОГООН = 2. Тиймээс утгуудыг бие биетэйгээ харьцуулж болно, өөрөөр хэлбэл. УЛААН< BLUE < GREEN. Программист при объявлении перечисления может самостоятельно задать значения каждой из констант:

Enum хандалт (READ = 1, WRITE = 2, EXEC = 4);

Утга нь хоёрын зэрэгтэй тооллогыг ашиглах нь ихэвчлэн тохиромжтой байдаг, учир нь хоёртын дүрслэлд 2-ын зэрэгтэй тоо нь 1 ба тэгээс бүрдэнэ. Жишээлбэл:

8 10 = 00001000 2

Эдгээр тоонуудыг нэгтгэсний үр дүн нь аль тоог нэмсэнийг үргэлж тодорхой харуулдаг.

37 10 = 00100101 2 = 00000001 2 + 00000100 2 + 00100000 2 = 1 10 + 4 10 + 32 10

Хүчингүй

Зохиол зүйн хувьд хоосон төрөл нь үндсэн төрлүүдэд хамаарах боловч үүнийг зөвхөн илүү төвөгтэй төрлүүдийн нэг хэсэг болгон ашиглаж болно, учир нь Void төрлийн объект байхгүй. Ерөнхийдөө энэ төрлийг функц нь буцах утгагүй гэдгийг харуулах эсвэл тодорхойгүй төрлийн объект руу заагчийн үндсэн төрөл болгон ашигладаг.

Хоосон объект; // алдаа, void void төрлийн объект байхгүй // алдаа, void void гэсэн лавлагаа байхгүй *ptr; // за заагчийг үл мэдэгдэх төрөлд хадгална

Функц ямар ч утгыг буцаадаггүй гэдгийг харуулахын тулд бид ихэвчлэн void-г тусгайлан ашигладаг. Программист санах ойн бүрэн бүтэн байдал, зөв ​​хэлбэрийн дамжуулалтыг бүрэн хариуцах үед хүчингүй төрлийн заагчийг ашигладаг.

Cast

Ихэнхдээ нэг төрлийн хувьсагчийн утгыг нөгөөд шилжүүлэх шаардлагатай байдаг. Анхны төрлийн утгуудын багц нь том төрлийн дэд олонлог (жишээлбэл, int нь урт, урт нь давхар) байвал хөрвүүлэгч нь далд хэлбэрээр ( далд хэлбэрээр) утгын төрлийг өөрчлөх.

бүхэл тоо = 2; хөвөгч хөвөгч = бүхэл тоо; // хөвөгч = 2.0

Урвуу төрлийн цутгалт нь мэдээлэл алдагдсанаар хийгдэх тул хөвөгч цэгийн зөвхөн бүхэл хэсэг үлдэж, бутархай хэсэг нь алдагдах болно.

Тодорхой төрлийн хөрвүүлэлт хийх боломжтой бөгөөд үүний тулд хувьсагчийн зүүн талд эсвэл анхны төрлийн ямар нэгэн утгын хувьд ямар төрлийг хаалтанд бичнэ үү.

Int утга = (int) 2.5;

Нэг ба хоёртын үйлдлүүд

Бидний өмнө нь гүйцэтгэсэн үйлдлүүдийг хоёртын үйлдлүүд гэж нэрлэдэг: үйлдлийн тэмдгийн зүүн ба баруун талд утгууд эсвэл хувьсагчид байдаг, жишээлбэл, 2 + 3. Програмчлалын хэл нь хоёртын үйлдлээс гадна хувьсагчдад хамаарах нэгдмэл үйлдлүүдийг ашигладаг. . Тэдгээрийг хувьсагчийн зүүн эсвэл баруун талд байрлуулж болно; өмнө нь ийм хэд хэдэн үйлдлүүд тулгарч байсан - лавлагаа арилгах үйлдэл (*) болон хувьсагчийн хаягийг авах (&) нь нэгдмэл байна. “++” болон “—” операторууд нь бүхэл тоон хувьсагчийн утгыг 1-ээр нэмэгдүүлж, багасгадаг ба хувьсагчийн зүүн болон баруун талд бичиж болно.

C++ нь илэрхийллийн зүүн болон баруун тал нь ижил хувьсагчийг агуулсан тохиолдолд хоёртын үйлдлүүдийн богино тэмдэглэгээг ашигладаг. Хувьсагчийн утга дээр зарим үйлдлийг гүйцэтгэх ба үйлдлийн үр дүн нь ижил хувьсагчид хадгалагдана:

A += 2; // a = a + 2-тэй ижил; b /= 5; // b = b / 5-тай ижил; c &= 3; // ижил c = c & 3;

Шошго: C хувьсагч. char, int, unsigned, long, long long, float, double, long double, long float, lexical sping. Хувьсагчдыг зарлах. Харагдах талбай. Хувьсагчдыг эхлүүлэх. Хувьсагчийн нэрс. Экспоненциал хэлбэр.

Хувьсагч

Хувьсагчдыг утгыг хадгалахад ашигладаг (sic!). Хувьсагч нь төрөл, нэрээр тодорхойлогддог. Нэрнээс нь эхэлье. Си хэлэнд хувьсагч нь тоогоор биш доогуур зураас эсвэл үсгээр эхэлж болно. Хувьсагч нь англи тэмдэгт, тоо, доогуур зураасыг агуулж болно. Хувьсагч нь түлхүүр үгтэй таарахгүй байх ёстой (эдгээр нь төрлийг тодорхойлох гэх мэт удирдлагын бүтэц болгон ашигладаг тусгай үгс юм)

авто давхар int бүтэц
завсарлага өөр урт солих
бүртгүүлэх typedef тэмдэгт гадна
буцах хүчингүй хэрэг хөвөх
гарын үсэг зураагүй анхдагч төлөө гарын үсэг зурсан
нэгдэл хийх хэрэв хэмжээ
тогтворгүй үргэлжлүүл тоо богино
байхад шугаманд
Жишээлбэл, энэ хөрвүүлэгчийн хувилбарт хамаарах бусад хэд хэдэн үгс хол, ойролцоо, жижигхэн, асар том, asm, asm_гэх мэт.

Жишээлбэл, зөв ​​танигч
a, _, _1_, Sarkasm, a_long_variable, aLongVariable, var19, defaultX, char_type
үнэнч бус
1a, $ үнэ цэнэ, a-урт-утга, богино

C бол том жижиг үсэг мэдрэгчтэй хэл юм. a болон A гэж нэрлэгдсэн хувьсагч эсвэл төгсгөл ба END, эсвэл perfectDark болон PerfectDarK нь өөр хувьсагч юм.

Хувьсах төрлүүд

Хувьсагчийн төрлийг тодорхойлно

  • 1) Хувьсагчийн хэмжээ байтаар (компьютер утгыг хадгалахад хэдэн байт санах ой хуваарилах вэ)
  • 2) Санах ойд хувьсагчийн төлөөлөл (хуваарилагдсан санах ойн хэсэгт байгаа битүүд хоёртын хэлбэрээр хэрхэн байрших).
C хэлэнд хэд хэдэн үндсэн төрлүүд байдаг. Бүхэл тоо, хөвөгч цэгийн тоо гэсэн хоёр бүлэгт хуваая.

Бүтэн

  • тэмдэгт- хэмжээ 1 байт. Үргэлж! Үүнийг санах хэрэгтэй.
  • богино- хэмжээ 2 байт
  • int- хэмжээ 4 байт
  • урт- хэмжээ 4 байт
  • урт удаан- хэмжээ 8 байт.
Энд тэмдэглэл хийх хэрэгтэй. Си хэл дээрх хувьсагчдын хэмжээг байт дахь хэмжээ гэж тодорхой заагаагүй. Стандартад зөвхөн үүнийг заасан байдаг

тэмдэгт<= short <= int <= long <= long long

Дээрх утгууд нь 32 битийн машин дээрх VC2012 хөрвүүлэгчид зориулагдсан болно. Тиймээс хэрэв таны програм хувьсагчийн хэмжээнээс хамаардаг бол түүний хэмжээг олж мэдэхэд цаг гарга.

Одоо төрөл бүрийн хувьсагчийн хадгалах хамгийн их ба хамгийн бага тоог тодорхойлъё. Тоонууд нь эерэг эсвэл сөрөг байж болно. Сөрөг тоонууд нь тэмдгийг хадгалахын тулд нэг бит ашигладаг. Заримдаа тэмдэг шаардлагатай байдаг (жишээлбэл, бид банкны данс, температур, координат гэх мэтийг хадгалдаг), заримдаа шаардлагагүй (жин, массивын хэмжээ, хүний ​​нас гэх мэт). Үүний тулд C нь signed болон unsigned төрлийн хувиргагчийг ашигладаг. unsigned char - бүх 8 бит тоо, нийтдээ бид хоёртын хэлбэрээр 00000000-аас 11111111 хүртэлх тооны багцтай, өөрөөр хэлбэл 0-ээс 255 хүртэлх тэмдэгт -128-аас 128 хүртэл байна. С хэлэнд хувьсагчдыг анхдагч байдлаар тэмдэглэдэг. Тиймээс тэмдэгт бичих, тэмдэгт тэмдэгт хоёр тэнцүү байна.

Таб. 1 в дэх бүхэл тооны төрлүүдийн хэмжээ.
Төрөл Хэмжээ, байт Хамгийн бага утга Хамгийн их утга
гарын үсэггүй тэмдэгт 1 0 255
гарын үсэг зурсан тэмдэгт
(тэмдэгт)
1 -128 127
гарын үсэггүй богино 2 0 65535
богино гарын үсэг зурсан
(богино)
2 -32768 32767
unsigned int
(гарын үсэггүй)
4 0 4294967296
int гарын үсэг зурсан
(int)
4 -2147483648 2147483647
гарын үсэггүй урт 4 0 4294967296
урт гарын үсэг зурсан
(урт)
4 -2147483648 2147483647
гарын үсэггүй урт удаан 8 0 18446744073709551615
урт удаан гарын үсэг зурсан
(урт урт)
8 -9223372036854775808 9223372036854775807

хэмжээ

Си хэлэнд хувьсагчийн хэмжээг байтаар авах боломжтой оператор байдаг. sizeof хувьсагч, эсвэл sizeof(хувьсагч) эсвэл sizeof(төрөл). Энэ функц нь программыг гүйцэтгэх явцад төрлийн хэмжээний мэдээллийг авах боломжгүй учраас энэ нь оператор юм. Хувьсагчдын хэмжээг шалгах жижиг програм бичье.

#оруулна #оруулна int main() ( char c; short s; int i; long l; long long L; //sizeof-г “функц” болгон дуудна printf("sizeof(char) = %d\n", sizeof(c)); printf ("sizeof(богино) = %d\n", sizeof(s)); printf("sizeof(int) = %d\n", sizeof(i)); printf("sizeof(long) = %d \ n", sizeof(l)); printf("sizeof(long long) = %d\n", sizeof(L)); //Оператороор дуудах printf("sizeof(char) = %d\n", sizeof c); printf("sizeof(богино) = %d\n", sizeof s); printf("sizeof(int) = %d\n", sizeof i); printf("sizeof(long) = %d \ n", sizeof l); printf("sizeof(урт) = %d\n", sizeof L); _getch(); )

(Хувьсагч нь ямар ч хүчинтэй нэртэй байж болох нь ойлгомжтой гэж би бодож байна). Энэ программыг илүү энгийнээр бичиж болох байсан

#оруулна #оруулна int main() ( printf("sizeof(char) = %d\n", sizeof(char)); printf("sizeof(богино) = %d\n", sizeof(богино)); printf("sizeof( int) = %d\n", sizeof(int)); printf("sizeof(урт) = %d\n", sizeof(урт)); printf("sizeof(урт) = %d\n", sizeof(long long)); //та төрлийн нэрийн хувьд sizeof-г оператор болгон дуудах боломжгүй //sizeof int - эмхэтгэлийн алдаа _getch(); )

C хэлэнд ижил төрөл нь хэд хэдэн нэртэй байж болно
богино === богино int
урт === урт int
long long === long long int
unsigned int === тэмдэггүй

Хөвөгч цэгийн төрлүүд

  • хөвөх- 4 байт,
  • урт хөвөх- 8 байт
  • давхар- 8 байт
  • урт давхар- 8 байт.
Энд мөн хөвөгч төрлүүдийн стандарт хэмжээсийн дагуу VC2012-ийн утгууд байна<= long float <= double <= long double все числа с плавающей точкой - со знаком.

Хувьсах халих

C хувьсагчийн хэт их урсгалыг хянадаггүй. Энэ нь int төрлийн хувьсагчийн утгыг байнга нэмэгдүүлснээр бид эцэст нь "утгыг дахин тохируулах" болно гэсэн үг юм.

#оруулна #оруулна void main() ( тэмдэггүй a = 4294967295; int b = 2147483647; //Тэмдэггүй төрөл халих printf("%u\n", a); a += 1; printf("%u", a); //Хийлс гарын үсэг зурсан төрөл printf("%d\n", b); b += 1; printf("%d", b); getch(); )

Ерөнхийдөө хувьсагч халих үеийн зан төлөвийг зөвхөн төрлөөр тодорхойлдог гарын үсэг зураагүй: Тэмдэглэгдээгүй бүхэл тоо нь утгыг дахин тохируулна. Бусад төрлүүдийн хувьд юу ч тохиолдож болох бөгөөд хэрвээ та халилтыг ажиглах шаардлагатай бол аргументуудыг шалгах замаар гараар хийх эсвэл хөрвүүлэгч болон процессорын архитектураас хамааран өөр аргыг ашиглана уу.

Postfix төрлийн тэмдэглэгээ

Тоотой ажиллахдаа тоонуудын төгсгөлд байгаа үсгүүдийг ашиглан түүний төрлийг тодорхой зааж өгч болно.

  • 11 - int тоо
  • 10u - гарын үсэг зураагүй
  • 22л эсвэл 22л - урт
  • 3890ll эсвэл 3890LL - урт урт (мөн lL эсвэл Ll)
  • 80.0f эсвэл 80.f эсвэл 80.0F - хөвөх (оруулгад аравтын бутархай байх ёстой)
  • 3.0 - давхар тоо
Шинжлэх ухааны тэмдэглэгээ нь анхдагчаар давхар тэмдэглэгээг мөн илэрхийлдэг. #оруулна #оруулна int main() ( printf("sizeof(int) = %d\n", sizeof(10)); printf("sizeof(unigned) = %d\n", sizeof(10u)); printf("sizeof( урт) = %d\n", sizeof(10л)); printf("sizeof(урт) = %d\n", sizeof(10ll)); printf("sizeof(float) = %d\n", sizeof(10.f)); printf("sizeof(давхар) = %d\n", sizeof(10.)); printf("sizeof(давхар) = %d\n", sizeof(10e2)); getch (); )

Гэсэн хэдий ч далд хэлбэрийн хувиргалт байгаа тул дараах код нь алдаа гаргахгүй

Int a = 10u; давхар g = 3.f;

Арван арван ба наймтын формат

Тоонуудтай ажиллахдаа та арван арван болон наймтын форматыг ашиглаж болно. Арван аравтын тооллын системд тоо 0х, наймт тооллын системд тэгээс эхэлдэг. Үүний дагуу, хэрэв тоо тэгээс эхэлдэг бол 7-оос дээш цифр агуулсан байх ёсгүй.

#оруулна #оруулна хүчингүй үндсэн() ( int x = 0xFF; int y = 077; printf("hex x = %x\n", x); printf("dec x = %d\n", x); printf("oct x = %o\n", x); printf("oct y = %o\n", y); printf("dec y = %d\n", y); printf("hex y = %x", y); getch(); )

Тоонуудын шинжлэх ухааны тэмдэглэгээ

Тоог илэрхийлэх экспоненциал хэлбэр нь тоог M e ± p хэлбэрээр илэрхийлэх бөгөөд энд М- тооны мантисса, х- аравын хүч. Энэ тохиолдолд мантиса нь аравтын бутархайн өмнө нэг тэгээс өөр тэмдэгтэй байх ёстой.
Жишээ нь 1.25 === 1.25e0, 123.5 === 1.235e2, 0.0002341 === 2.341e-4 гэх мэт.
3.2435e7 дүрслэл нь 3.2435e+7-тай тэнцэнэ
Зэрэг нь гурвын үржвэр байх ёстой өөр нэг төлөөлөл ("инженерчлэл") байдаг. Жишээ нь 1.25 === 1.25e0, 123.5 === 123.5e0, 0.0002341 === 234.1e-6, 0.25873256 === 258.73256e-3 гэх мэт.

Хувьсагчдыг зарлах

Си хэлэнд хувьсагчдыг үргэлж блокийн эхэнд зарладаг (блок нь буржгар хаалтаар тусгаарлагдсан кодын хэсэг юм)

<возвращаемый тип> <имя функции> (<тип> <аргумент>[, <тип> <аргумент>]) (хувьсагчийн мэдэгдэл, бусад бүх зүйл)

Хувьсагчийг зарлахдаа түүний төрөл, нэрийг бичнэ.

Int a; давхар параметр;

Та нэрсийг таслалаар тусгаарласнаар ижил төрлийн олон хувьсагчийг зарлаж болно

Урт урт arg1, arg2, arg3;

Жишээлбэл

#оруулна #оруулна int main() ( int a = 10; int b; while (a>0)( int z = a*a; b += z; ) )

Хувьсагчдыг энд зарласан аТэгээд бфункц дотор гол, болон хувьсагч zгогцооны биеийн дотор. Дараах код нь эмхэтгэлд алдаа гаргах болно

Int main() ( int i; i = 10; int j; )

Учир нь хувьсагчийн мэдэгдэл нь хуваарилалтын операторын дараа ирдэг. Хувьсагчдыг зарлахдаа тэдгээрийг шууд эхлүүлэх боломжтой.
int i = 0;
Гэхдээ хувьсагчийг зарлах үед эхлүүлэх нь тусдаа мэдэгдэл гэж тооцогддоггүй тул дараах код ажиллах болно

Int main() ( int i = 10; int j; )

Хувьсагчийн анхны утга

Бусад олон програмчлалын хэлнүүдийн нэгэн адил Си хэл дээрх хувьсагчийг анхдагч байдлаар тэг болгодоггүй гэдгийг санах нь маш чухал юм. Хувьсагчийг зарласны дараа энэ нь хувьсагчийн хувьд хуваарилагдсан санах ойн хэсэгт үлддэг санамсаргүй утга болох "хог" -ыг хадгалдаг. Энэ нь юуны түрүүнд програмыг оновчтой болгохтой холбоотой юм: хэрэв эхлүүлэх шаардлагагүй бол тэг бичихэд нөөцийг үрэх шаардлагагүй болно (тэмдэглэл: глобал хувьсагчдыг тэгээр эхлүүлдэг, яагаад тэгж байгаад энэ нийтлэлийг уншина уу) .

#оруулна #оруулна int main() ( int i; printf("%d", i); getch(); )

Хэрэв та энэ програмыг VC дээр ажиллуулбал гүйцэтгэлийн явцад анхааруулга гарч ирнэ
Ажиллах цагийн шалгалтын алдаа №3 - "i" хувьсагчийг эхлүүлэхгүйгээр ашиглаж байна.
Хэрэв та "Үргэлжлүүлэх" дээр дарвал програм "хог" гэж гарна. Бусад олон хөрвүүлэгчид програмыг ажиллуулахад анхааруулга байхгүй болно.

Хувьсах хүрээ

Хувьсагч нь локал (функц дотор зарласан) эсвэл глобал байж болно. Глобал хувьсагч нь энэ файлд зарлагдсан бүх функцэд харагдана. Орон нутгийн хувьсагч нь хамрах хүрээгээр хязгаарлагддаг. Би хувьсагчийг "газар дээр харагдахуйц" гэж хэлэхэд энэ нь тухайн газарт тодорхойлогдсон, ашиглаж болно гэсэн үг юм. Жишээлбэл, глобал хувьсагчтай програмыг авч үзье

#оруулна #оруулна int global = 100; void foo() ( printf("foo: %d\n", глобал); ) хүчингүй мөр(int глобал) ( printf("бар: %d\n", глобал); ) int main() ( foo() ; бар(333); getch(); )

Үзүүлэн харуулах болно
foo: 100
баар: 333
Энд глобал хувьсагч байна дэлхийнбүх функцэд харагдана. Гэхдээ функцийн аргумент нь глобал хувьсагчийг дарж бичдэг тул 333 аргументыг дамжуулахад локал утга 333 хэвлэгддэг.
Өөр нэг жишээ энд байна

#оруулна #оруулна int global = 100; int main() ( int global = 555; printf("%d\n", глобал); getch(); )

Програм нь 555 гаргана. Өмнөх тохиолдлын нэгэн адил локал хувьсагч нь “илүү чухал” байна. Жишээ нь тодорхой хүрээнд зарласан хувьсагч түүний гадна харагдахгүй

#оруулна #оруулна int global = 100; int main() ( int x = 10; ( int y = 30; printf("%d", x); ) printf("%d", y); )

Энэ жишээ нь хувьсагч учраас хөрвүүлэхгүй yзөвхөн өөрийн блок дотор оршдог.
Блок дотор зарласан хувьсагчид хоорондоо давхцдаг өөр нэг жишээ энд байна

#оруулна #оруулна int global = 100; int main() ( int x = 10; ( int x = 20; ( int x = 30; printf("%d\n", x); ) printf("%d\n", x); ) printf( "%d\n", x); getch(); )

Програм хэвлэх болно
30
20
10
Глобал хувьсагчаас зайлсхийх хэрэгтэй. Та үүнийг маш олон удаа сонсож болно. Яагаад гэдгийг ойлгохыг хичээцгээе. Таны энгийн төслүүдэд глобал хувьсагч нь хэвийн харагдаж байна. Гэхдээ танд ийм програм байгаа гэж төсөөлөөд үз дээ

  • 1) Хэд хэдэн хүн боловсруулсан бөгөөд хэдэн зуун мянган мөр кодоос бүрддэг
  • 2) Олон хэлхээнд ажилладаг

Нэгдүгээрт, глобал хувьсагч нь хүн бүрт харагдахуйц байвал програмын аль ч хэсэгт өөрчилж болно. Та глобал хувьсагчийг өөрчилсөн, үүнийг бичихийг хүсч байгаа бөгөөд програмын өөр хэсэг нь үүнийг өөр утгаар дарж бичсэн байна (үнэндээ энэ нь олон урсгалтай орчинд үүсдэг бүхэл бүтэн ангиллын асуудлууд юм). Хоёрдугаарт, том хэмжээний төслийн хувьд дэлхийн хувьсагчийг хэн, хэзээ үүсгэснийг хянах боломжгүй юм. Дээрх жишээнүүд нь хувьсагчид хэрхэн бие биентэйгээ давхцаж болохыг харуулж байгаа бөгөөд томоохон төсөлд мөн адил зүйл тохиолдох болно.

Глобал хувьсагч нь хөтөлбөрийг хялбаршуулдаг нөхцөл байдал мэдээж байдаг, гэхдээ эдгээр нөхцөл байдал нь таны гэрийн даалгаварт тийм ч их тохиолддоггүй, тиймээс ГЛОБАЛ ХУВЬСАГЧИЙГ БҮҮ БҮҮ!
Хувьсагч нь зөвхөн бүхэл тоо, хөвөгч цэг байж болохгүй. Цаашид судлах өөр олон төрөл бий.

Энэ хэсэгт C++ хэл дээрх үндсэн өгөгдлийн төрлүүдийг авч үзэх болно; эдгээр өгөгдлийн төрлүүдийг мөн суулгасан гэж нэрлэдэг. C++ програмчлалын хэл нь өргөтгөх боломжтой програмчлалын хэл юм. Өргөтгөх нэр томъёо нь суулгасан өгөгдлийн төрлөөс гадна та өөрийн өгөгдлийн төрлийг үүсгэж болно гэсэн үг юм. Тийм ч учраас C++ хэлэнд асар олон тооны өгөгдлийн төрлүүд байдаг. Бид зөвхөн голыг нь судлах болно.

Хүснэгт 1 - C++ өгөгдлийн төрлүүд
Төрөл байт Хүлээн зөвшөөрөгдсөн утгуудын хүрээ

бүхэл тоо (Boolean) өгөгдлийн төрөл

боол 1 0 / 255

бүхэл тоо (тэмдэгт) өгөгдлийн төрөл

тэмдэгт 1 0 / 255

бүхэл тоон өгөгдлийн төрлүүд

богино инт 2 -32 768 / 32 767
гарын үсэггүй богино int 2 0 / 65 535
int 4
unsigned int 4 0 / 4 294 967 295
long int 4 -2 147 483 648 / 2 147 483 647
unsigned long int 4 0 / 4 294 967 295

хөвөгч цэгийн өгөгдлийн төрлүүд

хөвөх 4 -2 147 483 648.0 / 2 147 483 647.0
урт хөвөх 8
давхар 8 -9 223 372 036 854 775 808 .0 / 9 223 372 036 854 775 807.0

Хүснэгт 1-д C++ хэл дээрх үндсэн өгөгдлийн төрлүүдийг харуулав. Хүснэгтийг бүхэлд нь гурван баганад хуваана. Эхний багана нь өгөгдлийн төрлийг тус бүрээр нь тодорхойлох нөөцлөгдсөн үгийг заадаг. Хоёрдахь баганад харгалзах өгөгдлийн төрөлтэй хувьсагчид хуваарилагдсан байтуудын тоог заана. Гурав дахь баганад зөвшөөрөгдөх утгуудын хүрээг харуулав. Хүснэгтэд бүх өгөгдлийн төрлүүдийг хамгийн жижигээс том хүртэл байрлуулсан болохыг анхаарна уу.

bool өгөгдлийн төрөл

Хүснэгтийн эхнийх нь bool өгөгдлийн төрөл юм бүхэл тоон өгөгдлийн төрөл, учир нь хүчинтэй утгуудын хүрээ нь 0-ээс 255 хүртэлх бүхэл тоо юм. Гэхдээ та аль хэдийн анзаарсанчлан хаалтанд логик өгөгдлийн төрлийг бичсэн байгаа бөгөөд энэ нь бас үнэн юм. Учир нь боолзөвхөн Булийн илэрхийллийн үр дүнг хадгалахад ашигладаг. Булийн илэрхийлэл нь үнэн эсвэл худал гэсэн хоёр үр дүнгийн аль нэгтэй байж болно. үнэн - логик илэрхийлэл үнэн бол худал - логик илэрхийлэл худал бол.

Гэхдээ bool өгөгдлийн төрлийн хүчинтэй утгын хүрээ 0-ээс 255 хүртэл байдаг тул энэ мужийг програмчлалын хэлээр тодорхойлсон үнэн ба худал логик тогтмолуудтай ямар нэгэн байдлаар тааруулах шаардлагатай байв. Иймээс үнэн тогтмол нь 1-ээс 255 хүртэлх бүх тоонуудтай тэнцэнэ, харин худал тогтмол нь зөвхөн нэг бүхэл тоо - 0-тэй тэнцүү байна. Bool өгөгдлийн төрлийг ашигладаг программыг авч үзье.

// data_type.cpp: Консолын програмын нэвтрэх цэгийг тодорхойлно. #include "stdafx.h" #include namespace std ашиглах; int main(int argc, char* argv) ( bool boolean = 25; // boolean if (boolean) нэртэй bool төрлийн хувьсагч // if cout операторын нөхцөл<< "true = " << boolean << endl; // выполнится в случае истинности условия else cout << "false = " << boolean << endl; // выполнится в случае, если условие ложно system("pause"); return 0; }

IN мөр 9төрлийн хувьсагчийг зарласанбоол , энэ нь 25. Онолын хувьд дараа ньмөр 9, логикийн хувьсагчид 25-ын тоог агуулсан байх ёстой, гэхдээ үнэндээ энэ хувьсагч нь 1-ийн тоог агуулдаг. Миний хэлсэнчлэн 0-ийн тоо нь худал, 1-ийн тоо нь үнэн юм. Гол нь хувьсагч гэх мэтбоол 0 (худал) эсвэл 1 (үнэн) гэсэн хоёр утгыг агуулж болно. Харин өгөгдлийн төрлөөрбоол бүхэл байт хуваарилагдсан бөгөөд энэ нь төрлийн хувьсагч гэсэн үг юмбоол 0-ээс 255 хүртэлх тоонуудыг агуулж болно. Хуурамч ба үнэн утгыг тодорхойлохын тулд зөвхөн 0 ба 1 гэсэн хоёр утга хэрэгтэй. "Бусад 253 утга нь юунд зориулагдсан бэ?" Гэсэн асуулт гарч ирнэ.

Энэ нөхцөл байдалд үндэслэн бид 2-оос 255 хүртэлх тоог 1-ийн тоотой дүйцэхүйц буюу үнэн гэж ашиглахаар тохиролцсон. Чухам ийм учраас логикийн хувьсагч нь 1 биш харин 25 гэсэн тоог агуулдаг 10-13 мөрзарласан бөгөөд энэ нь хяналтыг операторт шилжүүлдэг мөр 11, хэрэв нөхцөл үнэн бол оператор in мөр 13, нөхцөл худал бол. Хөтөлбөрийн үр дүнг Зураг 1-т үзүүлэв.

Үнэн = 1 Үргэлжлүүлэхийн тулд дурын товчлуурыг дарна уу. . .

Зураг 1 - bool өгөгдлийн төрөл

Өгөгдлийн төрөл char

Char өгөгдлийн төрөл нь тэмдэгтүүдийг төлөөлөх бүхэл тоон өгөгдлийн төрөл юм. Өөрөөр хэлбэл тэмдэгт бүр мужаас тодорхой тоотой тохирч байна. C++ хэл дээрх тэмдэгтүүдийн график дүрслэл char-ийн ачаар боломжтой тул char өгөгдлийн төрлийг тэмдэгтийн өгөгдлийн төрөл гэж нэрлэдэг. C++ хэл дээрх тэмдэгтүүдийг төлөөлөхийн тулд char өгөгдлийн төрөлд нэг байт хуваарилагдаж, нэг байт нь 8 бит агуулагддаг, дараа нь бид хоёрыг 8-ын хүчийг өсгөж, 256 утгыг авна - кодчилж болох тэмдэгтүүдийн тоо. Тиймээс char өгөгдлийн төрлийг ашиглан та 256 тэмдэгтээс аль нэгийг нь харуулах боломжтой. Бүх кодлогдсон тэмдэгтүүдийг -д дүрсэлсэн.

ASCII (Англи хэлнээс Мэдээлэл солилцох стандарт код) - Мэдээлэл солилцох Америкийн стандарт код.

Char өгөгдлийн төрлийг ашигладаг программыг авч үзье.

// symbols.cpp: Консол програмын нэвтрэх цэгийг тодорхойлно. #include "stdafx.h" #include namespace std ашиглах; int main(int argc, char* argv) ( char тэмдэг = "a"; // char төрлийн хувьсагчийг зарлаж "a" тэмдэгтээр эхлүүлэх cout<< "symbol = " << symbol << endl; // печать символа, содержащегося в переменной symbol char string = "сайт"; // объявление символьного массива (строки) cout << "string = " << string << endl; // печать строки system("pause"); return 0; }

Тэгэхээр, in мөр 9нэртэй хувьсагчбэлэг тэмдэг , энэ нь тэмдгийн утгыг оноож өгсөн"а" ( ASCII код). IN мөр 10 cout оператор хувьсагчид агуулагдсан тэмдэгтийг хэвлэнэбэлэг тэмдэг IN мөр 11нэртэй мөрт массив зарласанмөр , мөн массивын хэмжээ нь далд хэлбэрээр тодорхойлогддог. Мөр нь мөрийн массивт хадгалагддаг"вэб сайт" . Бид тэмдэгтийг like хувьсагч болгон хадгалсан гэдгийг анхаарна уутэмдэгт , дараа нь тэнцүү тэмдгийн дараа бид тэмдгийг бичсэн ганц хашилтыг тавьдаг. Мөрний массивыг тодорхой тэмдэгт мөрөөр эхлүүлэх үед тэнцүү тэмдгийн ард давхар хашилтыг байрлуулж, тодорхой тэмдэгт мөр бичнэ. Энгийн тэмдэгтийн нэгэн адил мөрүүдийг оператор ашиглан гаргадаг cout, мөр 12. Хөтөлбөрийн үр дүнг Зураг 2-т үзүүлэв.

Тэмдэг = мөр = сайт Үргэлжлүүлэхийн тулд дурын товчлуурыг дарна уу. . .

Зураг 2 - char өгөгдлийн төрөл

Бүхэл тоон өгөгдлийн төрлүүд

Бүхэл тоон өгөгдлийн төрлүүд нь тоог илэрхийлэхэд ашиглагддаг. Хүснэгт 1-д тэдгээрийн 6 нь байна: short int, unsigned short int, int, unsigned int, long int, unsigned long int . Тэд бүгд өөрийн санах ойн хэмжээ, хүлээн зөвшөөрөгдсөн утгын хүрээтэй байдаг. Хөрвүүлэгчээс хамааран эзэлсэн санах ойн хэмжээ, хүлээн зөвшөөрөгдсөн утгын хүрээ өөр өөр байж болно. Хүснэгт 1-д MVS2010 хөрвүүлэгчийн хувьд бүх хүлээн зөвшөөрөгдсөн утгууд болон эзлэгдсэн санах ойн хэмжээг авсан болно. Түүнчлэн, Хүснэгт 1-д заасан бүх өгөгдлийн төрлүүдийг эзэлдэг санах ойн хэмжээ болон хүлээн зөвшөөрөгдсөн утгуудын хүрээгээр нэмэгдүүлэх дарааллаар байрлуулсан болно. Хүлээн зөвшөөрөгдсөн утгуудын хүрээ нь нэг талаараа, эзлэгдсэн санах ойн хэмжээнээс хамаарна. Үүний дагуу эзлэгдсэн санах ойн хэмжээ их байх тусам хүлээн зөвшөөрөгдсөн утгын хүрээ том болно. Мөн өгөгдлийн төрлийг гарын үсэг зураагүй угтвараар зарласан тохиолдолд хүлээн зөвшөөрөгдсөн утгын хүрээ өөрчлөгдөнө. Тэмдэглэгдээгүй угтвар гэдэг нь өгөгдлийн төрөл нь гарын үсэг зурсан утгуудыг хадгалах боломжгүй гэсэн үг бөгөөд эерэг утгын хүрээ хоёр дахин нэмэгддэг, жишээлбэл, short int болон unsigned short int өгөгдлийн төрлүүд.

Бүхэл тоон өгөгдлийн төрлийн угтварууд:

богино угтвар нь санах ойн хэмжээг багасгах замаар хэрэглэгдэх өгөгдлийн төрлийг богиносгодог;

урт угтвар нь эзэлдэг санах ойн хэмжээг нэмэгдүүлэх замаар хэрэглэгдэх өгөгдлийн төрлийг өргөтгөдөг;

тэмдэггүй - угтвар нь эерэг утгуудын мужийг хоёр дахин ихэсгэдэг бол сөрөг утгын мужийг энэ төрлийн өгөгдлийн төрөлд хадгалах боломжгүй.

Тиймээс бид үндсэндээ бүхэл тоог илэрхийлэх нэг бүхэл тооны төрөлтэй байна: int өгөгдлийн төрөл. Богино, урт, тэмдэггүй угтваруудын ачаар эзэлдэг санах ойн хэмжээ болон (эсвэл) хүлээн зөвшөөрөгдсөн утгын хүрээгээр ялгаатай олон төрлийн int өгөгдлийн төрлүүд гарч ирдэг.

Хөвөгч цэгийн өгөгдлийн төрлүүд

C++ хэл дээр хөвөх цэгийн хоёр төрлийн өгөгдөл байдаг: float болон double. Хөвөгч цэгийн өгөгдлийн төрлүүд нь хөвөгч цэгийн тоог хадгалахад зориулагдсан. Хөвөгч ба давхар өгөгдлийн төрлүүд нь эерэг ба сөрөг хөвөгч цэгийн тоог хадгалах боломжтой. Хөвөгч өгөгдлийн төрөл нь давхар өгөгдлийн төрлийн санах ойн талбайн тал хувийг эзэлдэг бөгөөд энэ нь хүлээн зөвшөөрөгдсөн утгын хүрээ бага байна гэсэн үг юм. Хэрэв хөвөгч өгөгдлийн төрлийг урт угтвараар зарласан бол хүлээн зөвшөөрөгдсөн утгуудын хүрээ нь давхар өгөгдлийн төрлийн хүлээн зөвшөөрөгдсөн утгуудын мужтай тэнцүү байх болно. Үндсэндээ хөвөгч цэгийн өгөгдлийн төрлүүд нь мөнгөний гүйлгээ гэх мэт өндөр тооцооллын нарийвчлалтай асуудлыг шийдвэрлэхэд шаардлагатай байдаг.

Тиймээс бид C++ хэл дээрх үндсэн өгөгдлийн төрлүүдийн үндсэн санааг авч үзсэн. Үлдсэн зүйл бол эдгээр бүх хүлээн зөвшөөрөгдсөн утгууд болон эзлэгдсэн санах ойн хэмжээ хаанаас ирснийг харуулах явдал юм. Үүний тулд бид дээр дурдсан бүх төрлийн өгөгдлийн үндсэн шинж чанарыг тооцоолох програмыг боловсруулах болно.

// data_types.cpp: Консолын програмын нэвтрэх цэгийг тодорхойлно. #include "stdafx.h" #include // Оролт гаралтын засварлах номын сан #include // математик функцуудын толгой файл #include namespace std ашиглах; int main(int argc, char* argv) ( cout<< " data type " << "byte" << " " << " max value "<< endl // баганын толгой <<"bool = " << sizeof(bool) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных bool*/ << (pow(2,sizeof(bool) * 8.0) - 1) << endl << "char = " << sizeof(char) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных char*/ << (pow(2,sizeof(char) * 8.0) - 1) << endl << "short int = " << sizeof(short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных short int*/ << (pow(2,sizeof(short int) * 8.0 - 1) - 1) << endl << "unsigned short int = " << sizeof(unsigned short int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned short int*/ << (pow(2,sizeof(unsigned short int) * 8.0) - 1) << endl << "int = " << sizeof(int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных int*/ << (pow(2,sizeof(int) * 8.0 - 1) - 1) << endl << "unsigned int = " << sizeof(unsigned int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных unsigned int*/ << (pow(2,sizeof(unsigned int) * 8.0) - 1) << endl << "long int = " << sizeof(long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных long int*/ << (pow(2,sizeof(long int) * 8.0 - 1) - 1) << endl << "unsigned long int = " << sizeof(unsigned long int) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных undigned long int*/ << (pow(2,sizeof(unsigned long int) * 8.0) - 1) << endl << "float = " << sizeof(float) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных float*/ << (pow(2,sizeof(float) * 8.0 - 1) - 1) << endl << "double = " << sizeof(double) << " " << fixed << setprecision(2) /*вычисляем максимальное значение для типа данных double*/ << (pow(2,sizeof(double) * 8.0 - 1) - 1) << endl; system("pause"); return 0; }

Энэ программыг байршуулсан бөгөөд ингэснээр та өөрийн систем дэх өгөгдлийн төрлүүдийн шинж чанарыг харах боломжтой болно. Хөтөлбөр нь таны сайн мэдэхгүй байгаа хяналтын мэдэгдлүүдийг ашигладаг тул кодыг ойлгох шаардлагагүй болно. Програмын кодтой өнгөцхөн танилцахын тулд би доор зарим зүйлийг тайлбарлах болно. Оператор sizeof() Өгөгдлийн төрөл эсвэл хувьсагчид хуваарилагдсан байтын тоог тооцоолно. Чиг үүрэг pow(x,y) утгыг дээшлүүлдэг x-ийг y-ийн зэрэглэлд шилжүүлнэ , энэ функцийг толгой файлаас авах боломжтой . тогтмол болон setprecision() манипуляторууд толгой файлаас авах боломжтой . Эхнийх нь тогтсон , утгыг тогтмол хэлбэрээр гаралтын урсгал руу дамжуулдаг. Манипулятор setprecision(n) дэлгэц n аравтын орон. Тодорхой төрлийн өгөгдлийн хамгийн их утгыг дараах томъёогоор тооцоолно.

Max_val_type = 2^(b * 8 - 1) - 1; // сөрөг ба эерэг тоо бүхий өгөгдлийн төрлүүдийн хувьд // энд b нь энэ төрлийн өгөгдлийн төрөлтэй хувьсагчийн санах ойд хуваарилагдсан байтуудын тоо // нэг байтад 8 бит байгаа тул 8-аар үржүүлнэ // хаалтанд 1-ийг хасна, эерэг ба сөрөг утгуудын хувьд мужуудын тоог хоёр хуваах шаардлагатай тул // төгсгөлд нь 1-ийг хасна, учир нь тоонуудын хүрээ тэгээс эхэлдэг // тэмдэггүй max_val_type = 2^(b * 8) угтвар бүхий өгөгдлийн төрлүүд - 1; // зөвхөн эерэг тоотой өгөгдлийн төрлүүдийн хувьд // томьёоны тайлбар ижил төстэй, зөвхөн нэгжийг хаалтнаас хасаагүй болно.

Хөтөлбөр хэрхэн ажилладаг тухай жишээг Зураг 3-аас харж болно. Эхний баганад C++ хэл дээрх үндсэн өгөгдлийн төрлүүдийг, хоёр дахь баганад өгөгдлийн төрөл тус бүрт хуваарилагдсан санах ойн хэмжээг, гурав дахь баганад харгалзах хамгийн их утгыг харуулав. өгөгдлийн төрлийг агуулж болно. Хамгийн бага утга нь хамгийн ихтэй ижил байна. Тэмдэглэгдээгүй угтвартай өгөгдлийн төрлүүдийн хувьд хамгийн бага утга нь 0 байна.

Өгөгдлийн төрөл байт хамгийн их утга bool = 1 255.00 тэмдэгт = 1 255.00 богино int = 2 32767.00 гарын үсэггүй богино int = 2 65535.00 int = 4 2147483647.00 тэмдэггүй int = 4 42954347 урт = 4 4295447. 00 тэмдэггүй урт int = 4 4294967295.00 хөвөх = 4 2147483647.00 давхар = 8 9223372036854775808.00 Үргэлжлүүлэхийн тулд дурын товчлуурыг дарна уу. . .

Зураг 3 - C++ өгөгдлийн төрлүүд

Хэрэв жишээ нь short int төрлийн хувьсагчид 33000 гэсэн утгыг өгсөн бол short int төрлийн хувьсагчийн хамгийн их утга нь 32767 байх тул битийн сүлжээ халих болно. Өөрөөр хэлбэл, хувьсагчид өөр утга хадгалагдах болно. short int төрлийн, энэ нь сөрөг байх магадлалтай. Бид int өгөгдлийн төрлийг хөндсөн тул та int түлхүүр үгийг орхиж, жишээ нь, зүгээр л богино бичих боломжтой гэдгийг тэмдэглэх нь зүйтэй. Хөрвүүлэгч ийм оруулгыг short int гэж тайлбарлах болно. Урт болон тэмдэггүй угтварт мөн адил хамаарна. Жишээлбэл:

// өгөгдлийн төрлийн товчлол int short a1; // short int long a1-тэй ижил; // long int unsigned a1-тэй ижил; // unsigned int unsigned short a1-тэй адил; // тэмдэггүй богино int-тэй ижил

Редакторын сонголт
Нойр булчирхайн үрэвсэл, өөрөөр хэлбэл нойр булчирхайн үрэвсэлтэй тохиолдолд хоолны дэглэмийн тодорхой хязгаарлалтыг ажиглах шаардлагатай. Энэ бол цорын ганц арга зам ...

Сургуулийн наснаас эхлэн хүүхдүүд ширээн дээр удаан сууж байх ёстой. Сул нурууны булчингууд...

Заримдаа цус алдалтын ердийн байгалийн шалтгаан, өвчин, эмгэгээс үүдэлтэй цус алдалтыг ялгахад нэлээд хэцүү байдаг ...

Хеликобактер пилори хувийн ариун цэврийн стандартыг зөрчих, угаагаагүй хүнсний ногоо идэх, ахуйн аргаар нянгийн халдвар авч болно...
Одоогоос 25-хан жилийн өмнө эрдэмтэд шуугиан тарьсан нээлт хийжээ. Энэ нь ходоод гэдэсний замын өвчин, тухайлбал гастрит,...
Эмэгтэйчүүдийн ялгадас нь хэвийн үзэгдэл юм. Эдгээр нь умайн хүзүү, үтрээний шүүрлийн үйл ажиллагааны үр дагавар юм. Ердийн...
Хүн бүр бага наснаасаа эхлэн хоол хийхдээ амтлагч болгон нэмдэг энэ амтлагчийг мэддэг. Бэлтгэсэн зүйлээс...
Agave гэгддэг зуун настын ашигтай шинж чанарууд нь эрт дээр үеэс мэдэгдэж байсан. Энэ ургамлыг сэдэвчилсэн эм болгон ашиглаж болно...
Магадгүй хүн бүр амьдралдаа дор хаяж нэг удаа бие дээр улаан толбо гарч ирэхэд ийм нийтлэг асуудалтай тулгардаг. Эдгээр...