C++ Değişkenler ve Türler: Int, Char, Float, Double, Dize ve Bool
içindeki değişkenler C++
A C++ değişken bize adlandırılmış bir depolama yeteneği sağlar. Programcının verileri ihtiyaca göre değiştirmesine olanak tanır. Her değişkenin bir türü vardır C++Değişken türü, değişkenin bellek haritasının boyutunu ve düzenini, o bellekte saklanabilecek değer aralığını ve ona uygulanabilecek işlem kümesini belirlemeye yardımcı olur.
Temel Değişken türleri C++
İşte temel türler C++ değişkenleri:
dahili:
Tamsayı, herhangi bir kesirli veya üstel kısmı olmayan sayısal bir değişmezdir (sayılarla ilişkili). Örnek. 120, -90 vb.
Double:
Bu, çift hassasiyetli kayan nokta değeridir. Örnek: 11.22, 2.345
Char:
Bir karakter değişmezi, tek bir karakterin tek tırnak işaretleri içine alınmasıyla oluşturulur. Örneğin: 'a', 'm', 'F', 'P', '}' vb.
Kayan:
Kayan nokta değişmezi, kesirli biçime veya üslü biçime sahip sayısal bir değişmezdir. Örneğin: 1.3, 2.6
Dize Değişmezleri:
Bir dize sabiti, çift tırnak işaretleri içine alınmış bir karakter dizisidir. Örneğin: "Nasılsın?"
Bool:
Boolean değerini true veya false olarak tutar.
Değişkenleri Bildirme Kuralları C++
Bir değişkeni adlandırmak için bazı genel kurallar şunlardır:
- A C++ değişken ismi sadece harf, rakam ve alt çizgi içerebilir.
- A C++ değişken adı bir sayıyla başlayamaz.
- Değişken adları büyük harfle başlamamalıdır.
- Kullanılan bir değişken adı C++ anahtar kelime olamaz. Örneğin int, tam sayıları belirtmek için kullanılan bir anahtar kelimedir.
- A C++ değişken adı alt çizgi ile başlayabilir. Ancak bu iyi bir uygulama olarak görülmemektedir.
C++ Değişken Veri Türleri
C++ bir dizi ilkel türü tanımlar
The geçersiz type'ın kendisiyle ilişkili hiçbir değeri yoktur ve yalnızca birkaç durumda kullanılabilir. Çoğunlukla değer döndürmeyen işlevlerin dönüş türü olarak kullanılır.
The aritmetik türleri karakterleri, tam sayıları, Boole değerlerini ve kayan nokta sayılarını içerir. Aritmetik türü ayrıca 2 kategoriye ayrılırsa
- Kayan nokta türleri. Float (veya kayan tip) ondalık sayıları temsil eder. IEEE standardı, anlamlı basamakların asgari sayısını belirtir. Çoğu derleyici genellikle belirtilen asgariden daha fazla hassasiyet sağlar. Genellikle, kayan noktalar 32 bit, çift sayılar 64 bit ve uzun çift sayılar 96 veya 128 bit ile temsil edilir.
- İntegral türleri (karakter, tamsayılar ve Boolean türlerini içerir). Boole type'ın yalnızca iki tür değeri vardır: Doğru veya Yanlış. Bir kaç tane var tank Çoğu uluslararasılaşmayı desteklemek için var olan türler. En temel karakter türü char'dır. Bir karakter, tek bir bayt anlamına gelen tek bir makine baytı ile aynı boyuttadır.
The İntegral türleri imzalı veya imzasız olabilir.
İmzalı Tip: Negatif veya pozitif sayıları (sıfır dahil) temsil ederler. İmzalı bir türde aralığın +ve ve -ve değerleri arasında eşit olarak bölünmesi gerekir. Böylece, 8 bitlik imzalı bir karakter –127'den 127'ye kadar değerleri tutacaktır.
İmzasız Tür: İmzasız bir türde tüm değerler >= 0'dır. 8 bitlik işaretsiz bir karakter, 0'dan 255'e kadar (her ikisi de dahil) değerler içerebilir.
Değişken Adı veya Tanımlayıcıları
Tanımlayıcılar bazı harflerden, rakamlardan ve alt çizgi karakterinden veya bunların bazı kombinasyonlarından oluşabilir. İsim uzunluğuna herhangi bir sınırlama getirilmemiştir.
Tanımlayıcılar şunları yapmalıdır:
- bir harfle veya alt çizgiyle ('_') başlayın.
- Ve büyük/küçük harfe duyarlıdır; Büyük ve küçük harfler farklıdır:
// dört farklı int değişkeni tanımlar
int guru99, gurU99, GuRu99, GURU99;
The C++ dil, kullanımı için bazı adları ayırmıştır.
Değişkenleri adlandırmak için kabul edilmiş birçok kural vardır. farklı programlama dilleriBu kurallara uyulması programın okunabilirliğini artırabilir.
- Bir tanımlayıcı, en azından anlamının bir göstergesini vermelidir.
- Değişken adları genellikle küçük harfle yazılır; Guru99 veya GURU99 değil, guru99.
- Tanımladığımız sınıflar genellikle büyük harfle başlar.
- Birden fazla kelime içeren tanımlayıcılar her kelimeyi görsel olarak ayırt etmelidir. Örneğin guru99_website, guru99website değil.
C++ Değişken Bildirimi ve Tanımı
Bir değişkenin bildirimi, tanımlandığı kapsamda program tarafından bir ismin bilinmesini sağlar. Örnek:
int a=5; int b; char c='A';
int a,b; a=b=1000;
List initialization int a(5); int b{5};
Const Niteleyicisi C++
Kullanıcıdan alınacak girdi sayısını belirten bir buffsize değişkeninin olduğunu varsayalım. Burada program boyunca buffsize değerini değiştirmek istemiyoruz. Değerinin değişmemesi gerektiğini bildiğimiz bir değişken tanımlamak istiyoruz.
Bu durumda const anahtar sözcüğünü kullanın.
const int bufSize = 512; // input buffer size
Bu, bufSize'ı bir sabit olarak tanımlar. BufSize'a atama veya değiştirme girişimleri hata verir.
Burada, bir const nesnesinin değerini oluşturduktan sonra değiştiremeyiz, zorunlu olarak bildirilmesi ve başlatılması gerekir. Aksi takdirde derleyici bir hata atar.
const int i = get_size(); // ok: initialized at run time const int j = 42; // ok: initialized at compile time const int k; // error: k is uninitialized const int i = 42; const int ci = i; // ok: the value in i is copied into ci
Değişkenlerin Kapsamı C++
Kapsam, bir değişkenin bir anlamı olduğu bir programın kapsamıdır. Çoğunlukla aynı ad, farklı kapsamlardaki farklı varlıklara atıfta bulunmak için kullanılabilir. Değişkenler bildirildikleri noktadan bildirimlerinin göründüğü kapsamın sonuna kadar görülebilir.
#include <iostream> int main() { int sum = 0; // sum values from 1 through 10 inclusive for (int val = 1; val <= 10; ++val) sum += val; // equivalent to sum = sum + val cout << "Sum of 1 to 10 inclusive is "<< sum <<endl; return 0; }
Bu program 3 isim tanımlar, yani main, sum ve val. Bu isim alanı, std isim alanı adını ve bu isim alanından iki ismi daha kullanır—cout ve endl.
- “Ana” işlev adı küme parantezlerinin dışında tanımlanır. Main işlev adı, bir işlevin dışında tanımlanan diğer adların çoğu gibi, genel bir kapsama sahiptir. Bu, bir kez ilan edildiğinde, listede yer alan isimlerin küresel kapsam program boyunca erişilebilir.
- Toplam değişkeni, ana işlevin gövdesi olan bloğun kapsamında tanımlanır. Bildirim noktasından ve ana işlevin gövdesinin geri kalan kısmından erişilebilir. Ancak onun dışında değil. Bu, değişken toplamının olduğu anlamına gelir kapsamı engelle.
- Val değişkeni “for ifadesi” kapsamında tanımlanır. Bu ifadede kolaylıkla kullanılabilir ancak ana fonksiyonun başka bir yerinde kullanılamaz. Var yerel kapsam.
İç İçe Kapsam
Kapsam başka kapsamlar içerebilir. İçerilen (veya iç içe geçmiş) kapsama iç kapsam denir. İçeren kapsam dış kapsamdır.
#include <iostream> using namespace std; // Program for illustration purposes only: It is bad style for a function // to use a global variable and also define a local variable with the same name int reused = 42; // reused has global scope int main() { int unique = 0; // unique has block scope // output #1: uses global reused; prints 42 0 cout << reused << " " << unique << endl; int reused = 0; // new, local object named reused hides global reused // output #2: uses local reused; prints 0 0 cout << reused << " " << unique << endl; // output #3: explicitly requests the global reused; prints 42 0 cout << ::reused << " " << unique << endl; return 0; }
Çıkış #1 yeniden kullanımın yerel tanımından önce görünür. Böylece bu çıktı
ifade, global kapsamda tanımlanan yeniden kullanılan adı kullanan ifadedir. Bu ifadenin çıktısı
42 0
Çıkış #2 yeniden kullanımın yerel tanımından sonra ortaya çıkar. Artık kapsam dahilindedir. Bu nedenle, bu ikinci çıktı deyimi, genel nesne yerine yeniden kullanılan adlı yerel nesneyi kullanır ve çıktıları verir.
0 0
Çıkış #3 kullanarak varsayılan kapsam belirleme kurallarını geçersiz kılar. kapsam operatörü. Küresel kapsamın adı yoktur. Bu nedenle, kapsam operatörünün (::) sol tarafı boş olduğunda. Bunu, küresel kapsamın sağ tarafındaki adı getirme isteği olarak yorumluyor. Bu nedenle, ifade global yeniden kullanımı kullanır ve çıktı olarak verir.
42 0
Değişken Tip Dönüşümü
Bir türden bir değişken diğerine dönüştürülebilir. Buna “Tür Dönüşümü” denir. Farklı dönüştürme kurallarına bakalım C++ değişken türleri:
Bool olmayan bir değerin bool bir değişkene atanması, değer 0 ise false, aksi takdirde true sonucunu verir.
bool b = 42; // b is true
Diğer aritmetik türlerinden birine bir bool atanması, bool doğruysa 1, bool yanlışsa 0 sonucunu verir.
bool b = true; int i = b; // i has value 1
İnt tipindeki bir değişkene kayan nokta değeri atamak, kesilen değeri verir. Saklanan değer ondalık noktadan önceki kısımdır.
int i = 3.14; // i has value 3
Float tipindeki bir değişkene int değeri atanması kesirli kısmın sıfır olmasına neden olur. Tamsayı, kayan değişkenin alabileceğinden daha fazla bit içeriyorsa hassasiyet genellikle kaybolur.
Int i=3; double pi = i; // pi has value 3.0
İşaretsiz türdeki bir değişkene aralık dışında bir değer atamaya çalışırsak sonuç %(modulo) değerinin geri kalanı olur.
Örneğin, 8 bitlik işaretsiz bir karakter türü, 0'dan 255'e kadar (bu değerler dahil) değerleri tutabilir. Bu aralığın dışında bir değer atanması, derleyicinin bu değerin geri kalanını modulo 256 olarak atamasıyla sonuçlanacaktır. Bu nedenle, yukarıdaki mantıkla, 1 bitlik işaretsiz bir karaktere –8 ataması, o nesneye 255 değerini verir.
unsigned char c = -1; // assuming 8-bit chars, c has value 255
İmzalı türdeki bir nesneye aralık dışında bir değer atamaya çalışırsak sonuç tahmin edilemez. Tanımsızdır. Program dışarıdan çalışıyor gibi görünebilir, çökebilir veya gereksiz değerler üretebilir.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined
Derleyici, başka türden bir değer beklendiğinde bir türden bir değer kullandığımızda aynı tür dönüşümleri uygular.
int i = 42; if (i) // condition will evaluate as true i = 0;
Bu değer= 0 ise koşul yanlıştır; diğer tüm (sıfır olmayan) değerler doğru sonucunu verir. Aynı konsepte göre, bir aritmetik ifadede bool kullandığımızda değeri her zaman 0 veya 1'e dönüştürülür. Sonuç olarak, bir aritmetik ifadede bool kullanmak genellikle neredeyse kesin olarak yanlıştır.
Dikkat: İmzalı ve İmzasız Türleri Karıştırmayın
Signed ve unsigned'ı karıştıran ifadeler, imzalı değer negatif olduğunda şaşırtıcı ve yanlış sonuçlar doğurabilir. Yukarıda tartışıldığı gibi imzalı değerler otomatik olarak imzasız değerlere dönüştürülür.
Örneğin, aşağıdaki gibi bir aritmetik ifadede
x* y
Eğer x -1 ve y 1 ise ve hem x hem de y int ise bu durumda değer beklendiği gibi -1 olur.
Eğer x int ise ve y işaretsizse, bu ifadenin değeri, bir tamsayının derleme makinesinde kaç bit olduğuna bağlıdır. Bizim makinemizde bu ifade 4294967295 sonucunu verir.
Değişkenleri Kaydet
Kayıt değişkenlerine erişim, bellek değişkenlerine kıyasla daha hızlıdır. Yani sıklıkla kullanılan değişkenler C++ program kullanılarak kayıtlara yerleştirilebilir kayıt olmak anahtar kelime. Register anahtar sözcüğü, derleyiciye verilen değişkeni bir kayıt defterinde saklamasını söyler. Bunu bir kayda koyup koymamak derleyicinin seçimidir. Genel olarak derleyicilerin kendisi, bazı değişkenlerin kayıt defterine yerleştirilmesini içeren çeşitli optimizasyonlar yapar. Bir kayıt değişkeninin sayısında herhangi bir sınırlama yoktur. C++ programı. Ancak derleyici değişkeni bir kayıt defterinde saklamayabilir. Bunun nedeni, kayıt belleğinin çok sınırlı olması ve çoğunlukla işletim sistemi tarafından kullanılmasıdır.
Tanımlamak için:
register int i;
Yorumlar
Yorumlar kodun derleyici tarafından göz ardı edilen kısımlarıdır. Programcının kaynak kodun/programın ilgili alanlarına not almasını sağlar. Yorumlar blok halinde veya tek satır halinde gelir. Program yorumları açıklayıcı ifadelerdir. Dahil edilebilir C++ herkesin kaynak kodunu okumasına yardımcı olan kod. Tüm programlama dilleri bir tür yoruma izin verir. C++ hem tek satırlı hem de çok satırlı yorumları destekler.
- Tek satırlık yorumlar // ile başlayıp satır sonuna kadar devam edenlerdir. Yorum satırındaki son karakter \ ise yorum bir sonraki satırda devam edecektir.
- Çok satırlı yorumlar /* ile başlayıp */ ile bitenlerdir.
/* This is a comment */ /* C++ comments can also * span multiple lines */
Kaçış dizileri
Bazı karakterler, örneğin backspace ve kontrol karakterleri, görünür bir görüntüye sahip değildir. Bu tür karakterler yazdırılamayan karakterler olarak bilinir. Diğer karakterler (tek ve çift tırnak işaretleri, soru işareti ve ters eğik çizgi) birçok programlama dilinde özel bir anlama sahiptir.
Programlarımız bu karakterlerin hiçbirini doğrudan kullanamamaktadır. Bunun yerine, bu tür karakterleri temsil etmek için bir kaçış dizisi kullanabiliriz. Bir kaçış dizisi ters eğik çizgiyle başlar.
The C++ Programlama dili birkaç kaçış dizisini tanımlar:
Ne işe yarar? | Karakter |
---|---|
Yeni hat | \n |
Dikey sekme | \v |
backslash | \\ |
Satırbaşı | \r |
Yatay sekme | \t |
Geri tuşu | \b |
Soru işareti | \? |
Form besleme | \f |
Uyarı (zil) | \a |
Double alıntı yapmak | \ ” |
Tek alıntı | \ ' |
Bir kaçış dizisini sanki tek bir karaktermiş gibi kullanırız:
cout << '\n'; // prints a newline cout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newline
Ayrıca genelleştirilmiş kaçış dizileri \x ve ardından bir veya daha fazla onaltılık rakam da yazabiliriz. Veya bir \ ardından bir, iki veya üç sekizlik rakam kullanırız. Genelleştirilmiş kaçış dizisi, karakterin sayısal değerini temsil eder. Bazı örnekler (Latin-1 karakter kümesini varsayarsak):
\7 (bell) \12 (newline) \40 (blank) \0 (null) \115 ('M') \x4d ('M')
Başka herhangi bir karakteri kullandığımız gibi, önceden tanımlanmış kaçış dizilerini de kullanabiliriz.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newline cout << '\115' << '\n'; // prints M followed by a newline
ÖZET
- A C++ değişken bize adlandırılmış bir depolama yeteneği sağlar.
- C++ değişken türleri: int, double, tank, float, string, bool, vb.
- İçerilen (veya iç içe geçmiş) kapsam, iç kapsam olarak adlandırılır ve içeren kapsam, dış kapsamdır.
- Bir türden bir değişken diğerine dönüştürülebilir. Buna “Tür Dönüşümü” denir.
- Kayıt değişkenlerine erişim, bellek değişkenlerine kıyasla daha hızlıdır.
- Yorumlar kodun derleyici tarafından göz ardı edilen kısımlarıdır.
- Geri tuşu ve kontrol karakterleri gibi bazı karakterlerin görünür bir resmi yoktur.