Hajmi yoki qiymati
|
C ++
|
Shortlnt
|
8 bit butun son
|
imzolangan char
|
Smalllnt
|
16 bitli butun son
|
qisqa
|
Longlnt
|
butun son 32 bit
|
int
|
Bayt
|
imzosi bo'lmagan 8 bit
|
imzolanmagan char
|
Soz
|
imzosi bo'lmagan 16 bit
|
imzosi qisqa
|
Butun son
|
butun son 32 bit
|
int
|
Kardinal
|
imzosi bo'lmagan 32 bit
|
imzosi yo'q int
|
Boolean
|
rost, yolg'on yoki
|
bool
|
Baytool
|
haqiqiy, yolg'on yoki 8 bitdan iborat bo'lmagan butun son
|
imzolanmagan char
|
Wordbool
|
haqiqiy, yolg'on yoki imzosiz 16 bit
|
imzosi qisqa
|
Longbool
|
haqiqiy, yolg'on yoki imzosiz butun son 32 bit
|
BOOL (WinAPI)
|
Ansichar
|
8 bit imzolanmagan belgi
|
char
|
Widechar
|
so'z o'lchamidagi unikod belgisi
|
wchar_t
|
Char
|
8 bit imzolanmagan belgi
|
char
|
Ro'yxatdan o'tish
|
AnsiString Delphi
|
Ro'yxatdan o'tish
|
Satr [n]
|
eski Delphi liniyasi uslubi, n = 1..255 bit
|
SmallString
|
Qisqa chiziq
|
eski Delphi liniyasi uslubi, 255 bit
|
SmallString <255>
|
Qator
|
AnsiString Delphi
|
Ro'yxatdan o'tish
|
Yagona
|
32 bit suzuvchi nuqta raqami
|
suzuvchi
|
Ikkita
|
64 bit suzuvchi nuqta raqami
|
ikki baravar
|
Kengaytirilgan
|
80 bit suzuvchi nuqta
|
uzoq juftlik
|
Haqiqiy
|
32 bit suzuvchi nuqta raqami
|
ikki baravar
|
Ko'rsatkich
|
umumiy ko'rsatkich 32 bit
|
bo'shliq *
|
Pchar
|
32 bitli belgilar ko'rsatkichi
|
imzolanmagan char *
|
PAnsiChar
|
ANSI 32 bitli ko'rsatgich
|
imzolanmagan char *
|
Komp
|
64 bit suzuvchi nuqta raqami
|
Komp
|
Olevariant
|
variant ole qiymati
|
Olevariant
|
Kalit so'zlar
Shuni ta'kidlash kerakki, C ++ harflar uchun katta ahamiyatga ega, OP dan farqli o'laroq, bunday emas.
C ++
|
#define #elif #else #endif #error #if #ifdef #ifndef #include #line #pragma #printf #undef avto-break case case char class const const_cast davom eting odatiy o'chirish ikki tomonlama dinamikani o'zgartiring, boshqa soxtalashtirishdan tashqari, tashqi do'st soxta oxirida suzadi. agar inline int uzoq mutable ismlar maydoni yangi operator xususiy himoyalangan jamoat registri reinterpret_cast return qisqa imzolangan o'lcham static static_cast tuzilmani o'zgartirish shabloni, bu otish haqiqiy urinish tipedef typeid ittifoqi virtual bo'shliqlardan foydalanmasdan imzolanmagan va xalloc yangi o'chirish paytida.
|
OP
|
ABSOLUTE VA ARRAY ASM ASSEMBLER BOOLEAN BYTE Case CHAR COMP CONST Konstruktori Quruvchi DIV DO DOUNTLE DOWNTO ELSE SON HALT FALSE FALSIYA TO'G'RISIDA O'TKAZILDI FUNKSIYA FAOLIYATINI MUHOFAZA QILIShGA TAKLIF BERADI? SHL ShORTINT SHR YANGI TEKSHIRUVNI TO'G'RISIDA NAZORAT QILMOQDA, HOR WORD XOR BILAN VERT VURTUAL FOYDALANING
|
Operator oxirining belgilari
C ++
Ko'pgina iboralar nuqta-vergul bilan tugaydi;
Garchi bir nechta istisnolar mavjud bo'lsa-da. Masalan, sarlavha fayllarini ulashda nuqta-vergul talab qilinmaydi
#include "foo.h" // nuqta-vergul bilan tugamaydi;
# belgilangan MAXNAMELENGTH 35 // shuningdek, nuqta-vergul bilan tugamaydi;
OP
Barcha iboralar nuqta-vergul bilan tugaydi; C ++
o'zgarmaydigan deklaratsiya o'zgaruvchining maksimal uzunligi 32 belgidir - bu uzoqroq bo'lishi mumkin, ammo faqat birinchi 32 ta belgi tan olinadi. O'zgaruvchilar kodning istalgan joyida e'lon qilinishi mumkin va shunga mos ravishda o'zgaruvchilar ishlatiladigan joygacha e'lon qilinishi kerak. // ... ba'zi kod ... char sName [10]; int iCount, iLoop, iValToReach; juft dMaxLoan, dTotal; float fMaxRate = 123.875; OP 63 ta belgining maksimal o'zgaruvchan uzunligi - ko'proq bo'lishi mumkin, ammo faqat birinchi 63 ta belgi tan olinadi. O'zgaruvchilar " var " blokida protsedura yoki funktsiya boshida yoki ob'ektni belgilashda funktsiyalar va protseduralar deklaratsiyasidan oldin e'lon qilinishi kerak, o'zgaruvchilar qiymatlari var blok ichida o'rnatilishi mumkin emas . // ... ba'zi kod ... funktsiyasi PayBack_d ( var dAmount: double): double ; var iCount, iLoop, iValToReach: butun son ; dMaxLoan, dTotal, dMaxRate: juft ; dMaxRate boshlang : = 123.875; ... chiziqlar
C ++
C ++ qatorlarida maxsus satr mavjud emas. Satrlar nol bilan tugaydigan belgilar qatori sifatida ko'rib chiqiladi ('\ 0'). Chiziqning o'lchamlari cheksiz bo'lishi mumkin (nazariy jihatdan maksimal xotira hajmi). Chiziqqa ko'rsatgich orqali chiziqdagi birinchi belgigacha kirish mumkin. Satrning qiymati bu birinchi belgining manzili. Shunday qilib, biz C ++ tilida ko'rsatgich - satrning birinchi belgisiga ishora deb aytishimiz mumkin. Shu ma'noda, satrlar massivlarga o'xshaydi, chunki massiv ham uning birinchi elementiga ishora qiladi. Qator belgilar qatori yoki char * tipining o'zgaruvchisi sifatida e'lon qilinishi mumkin. Quyidagi deklaratsiyalarning har biri to'g'ri:
char sName [26]; // 25 ta belgi va NULL
char psDemo [] = "Salom, u erda!";
char * psDemo = yangi char [26];
Simlarni qayta ishlash uchun bir qator kutubxona funktsiyalari mavjud. Ularning asosiylari strcat - bir-biriga bog'lash (yopishtirish), strcmp - ikkita satrni taqqoslash, strcpy - bitta satrni boshqasiga nusxalash, strstr - satrda berilgan substratni qidirish, strlen - satr uzunligini aniqlash, strupr - satr belgilarini bosh harfga, sprintfga o'zgartirish - berilgan formatlash satriga va argumentlar ro'yxatiga va boshqa bir qator funktsiyalarga chiziq qurish.
OP
Delphi Paskal torlari deb nomlanuvchi 255 belgidan iborat uzunlikdagi deyarli cheksiz (2 Gb gacha) torlarni qo'llab-quvvatlaydi. $ H kompilyatorining yangi yo'riqnomasi sizga ajratilgan so'z satridan foydalanish ma'nosini boshqarish imkoniyatini beradi. Ushbu ko'rsatmaning standart holati ($ H +) uzun satrlarni satr turi sifatida ishlatishni nazarda tutadi. $ H - 255 belgili qisqa paskal satrlaridan foydalanishni anglatadi. Delphi-ning barcha tarkibiy qismlari uzun iplardan foydalanadi. Shuni ta'kidlash kerakki, $ H direktivasining holatidan qat'i nazar, agar satrning maksimal uzunligi 255 dan kam bo'lsa, unda qisqa satr (ShortString) nazarda tutiladi. Kvadrat qavslardan foydalanib satr uzunligini belgilash har doim ShortString pastki turini anglatadi. Delphi 2.0-da taqdim etilgan uzun iplar ko'p hollarda eski tipdagi torlarga mos keladi. Bunday holda, ulardan foydalanishning quyidagi xususiyatlarini hisobga olish kerak:
Uzoq chiziqlar uchun xotira dinamik ravishda ajratilgan. Uzun simlar - bu uyumda saqlanadigan qatorlarga ishora. Qator uzunligini o'zgartirganda, Delphi32 xotirani qayta taqsimlaydi. Xotira menejeri xotirani shu hududda qayta taqsimlashga harakat qilayotganligi sababli, u har doim ham buni amalga oshira olmaydi. Shuning uchun, satr uzunligini oshirish uchun Delphi 2.0-ga kiritilgan SetLength protsedurasidan foydalaning, agar imkon bo'lsa, xotirani qayta taqsimlang.
Uzun satrlar avtomatik ravishda # 0 bilan tugaydi, shuning uchun siz null bilan tugagan satrni qayta ishlashda foydalangan ushbu satrlar bilan ishlash usullaridan foydalanishingiz mumkin. Shuning uchun, endi Delphi qisqa satrlarni qo'llab-quvvatlasa ham, StrPCopy kabi ishlash funktsiyalaridan foydalanishning hojati yo'q
Delphi har bir uzun chiziq uchun foydalanish hisoblagichiga ega. Bu shuni anglatadiki, agar sizning dasturingizda satr nusxasi bo'lsa (masalan, uni protseduraga simli parametr sifatida o'tkazish), satrga havolalar soni avtomatik ravishda ko'payadi. Keyingi satr nusxasini ishlatish tugaganda, ya'ni foydalanish hajmi oshib ketganda, foydalanish hisoblagichi avtomatik ravishda kamayadi. Foydalanish hisoblagichi nolga teng bo'lganda, chiziq uchun ajratilgan xotira avtomatik ravishda bo'shatiladi
Darhaqiqat, uzun chiziqlar takrorlanmaganligi va ular uchun hisoblagichlardan foydalanilganligi sababli, uzun chiziqlarni tayinlash qisqa chiziqlarga qaraganda ancha tezroq. Stringlar bilan ishlashda ishlatiladigan kodning ko'p qismi qisqa va uzun satrlar uchun o'zaro ishlashga ega bo'lishiga qaramay (ya'ni bu har ikki tur uchun ham amal qiladi), ammo qisqa satrlarda ba'zi operatsiyalar uzun satrlarga qo'llanilmaydi. Uzun satrlarni OpenString yoki qisqa satrlarga mos keladigan var-parametrlar parametrlariga o'tkazish mumkin emas.
Massivlar
Massivlar bir xil ma'lumot turlarining tartiblangan ketma-ketliklari (ob'ektlarni ham o'z ichiga olishi mumkin). C ++ va OP-da massivni e'lon qilish usullari boshqacha.
C ++
massivlari "nolga asoslangan" - birinchi element [0] element, ikkinchi element [1], uchinchi element [2] va boshqalar. Bu har doim yangi boshlanuvchilarni chalkashtiradi. Array
deklaratsiyasi:
ikki tomonlama Array [31];
Foydalanish:
for (int i = 30, j = 29; i> 0; i -, j--)
Array [i] = Mass [j];
OP
1-elementdagi massivning boshlanishi ... lekin har doim ham emas Delphi-da nolga asoslangan komponentlar va C ++ kabi ob'ektlar mavjud. Masalan, elementlari noldan boshlanadigan TL ro'yxati. Siz e'lon qilgan har qanday massiv bitta narsaga asoslanadi.
var ArrayS: qator [1..31] juft;
i, j: butun son;
boshlash
j: = 30;
i uchun: = 31 2 downto qilasiz
boshlanadi
massivida [i] = massivida [j];
Dek (j); {yoki j: = j-1; }
oxiri;
......
Ikkala til ham ko'p o'lchovli qatorlarni qo'llab-quvvatlaydi.
C ++
juft dMatriks [50] [20];
OP
dMatriks: qator [1..50, 1..20] juft;
O'zgaruvchilarni tenglashtirish va taqqoslash
C ++
Taqqoslash "ikki baravar" (==) operatori tomonidan bajarilib, bitta (=) ga tenglashtiriladi.
int i, j;
agar (i == j) // taqqoslash
.....
i = j; // tenglashtirish
....
OP
Taqqoslash "teng" (=) operatori bilan amalga oshiriladi, yo'g'on ichak + bitta tenglashtiriladi (: =)
...
agar dMaxRate = 15.75 bo'lsa, unda
boshlang ...
dMaxRate: = 12.5;
...
oxiri;
OPdagi qoida uchun istisno o'zgaruvchini doimiyga tenglashtirishdir. Bunday holda bitta (=) tenglik qo'llaniladi
Doimiylarning deklaratsiyasi
Konstantalar o'zgarmas qiymatlardir. Aniqlovchi C ++ va OP da ham doimiy sifatida e'lon qilinishi mumkin. Ikkala C ++ va OP konstantalari ular e'lon qilinganida qiymatlar berilishi kerak.
C ++
Ma'lumotlar turidan oldin doimiylikni e'lon qilganda, const
const int iMax = 2000 kalit so'zidan foydalaniladi;
const double dMaxValue = 1234.75;
S ++ da barqarorlikni preprosessor direktivasi orqali ham aniqlash mumkin #define
#define MAXA 1000
ammo amalda u eskirgan. Tuzuvchi turni tekshirishni amalga oshira olmasligi sababli (u ini yoki double ekanligini aniqlay olmaydi)
OP
Konstantalar, o'zgaruvchilar singari, "const" kod blokida protsedura yoki funktsiya ta'rifi, ta'rifi yoki ob'ekt deklaratsiyasining boshida e'lon qilinishi kerak.
PayBack_d funktsiyasi ( var dAmount: double): double ;
255>
Do'stlaringiz bilan baham: |