C ++ 'daki değişkenler
Bir C ++ değişkeni bize adlandırılmış bir depolama yeteneği sağlar. Programcının verileri ihtiyaca göre değiştirmesine izin verir. Her değişkenin bir C ++ tipi vardır. Değişken türü, değişkenin bellek haritasının boyutunu ve düzenini, bu bellekte saklanabilecek değer aralığını ve ona uygulanabilecek işlemler kümesini belirlemeye yardımcı olur.
Bu C ++ eğitiminde şunları öğreneceksiniz:
- C ++ 'daki değişkenler
- C ++ 'da temel Değişken türleri
- C ++ 'da Değişken Bildirme Kuralları
- C ++ Değişken Veri Türleri
- Değişken Adı veya Tanımlayıcılar
- C ++ 'da Const Niteleyici
- C ++ 'daki Değişkenlerin Kapsamı
- Değişken Tür Dönüşümü
- Değişkenleri Kaydedin
- Kaçış dizileri
C ++ 'da temel Değişken türleri
C ++ değişkenlerinin temel türleri şunlardır:
Int:
Bir tamsayı, kesirli veya üstel bölümü olmayan sayısal bir değişmez bilgidir (sayılarla ilişkilendirilir). Misal. 120, -90 vb.
Çift:
Çift hassasiyetli bir kayan nokta değeridir. Örnek: 11.22, 2.345
Karakter:
Tek bir karakteri tek tırnak işaretleri içine alarak bir karakter değişmezi oluşturulur. Örneğin: 'a', 'm', 'F', 'P', '}' vb.
Kayan:
Kayan noktalı değişmez değer, kesirli bir biçime veya üslü biçime sahip sayısal bir değişmez bilgidir. Örneğin: 1.3, 2.6
Dize Değişmezleri:
Dize değişmezi, çift tırnak işaretleri içine alınmış bir karakter dizisidir. Örneğin: "Nasılsın?"
Bool:
Boolean değerini doğru veya yanlış tutar.
C ++ 'da Değişken Bildirme Kuralları
Bir değişkeni adlandırmak için bazı genel kurallar şunlardır:
- Bir C ++ değişken adı yalnızca harflere, sayılara ve alt çizgiye sahip olabilir.
- C ++ değişken adı bir sayıyla başlayamaz.
- Değişken adları büyük harfle başlamamalıdır.
- C ++ 'da kullanılan bir değişken adı bir anahtar kelime olamaz. Örneğin, int, tam sayıları belirtmek için kullanılan bir anahtar sözcüktür.
- Bir C ++ değişken adı bir alt çizgiyle başlayabilir. Ancak, iyi bir uygulama olarak kabul edilmez.
C ++ Değişken Veri Türleri
C ++, tüm ilkel türler kümesini tanımlar
Hükümsüz tip hayır onunla değerleri ilişkilendirdiği ve sadece birkaç koşullarda kullanılabilir. En yaygın olarak, bir değer döndürmeyen işlevlerin dönüş türü olarak görülür.
Aritmetik türleri karakterleri, tamsayılar, Boolean değerleri ve kayan nokta sayıları içerir. Aritmetik tip, ayrıca 2 kategoriye ayrılırsa
- Kayan nokta türleri . Float (veya kayan tip) ondalık sayıları temsil eder. IEEE standardı, minimum sayıda anlamlı basamak belirtir. Çoğu derleyici genellikle belirtilen minimumdan daha fazla kesinlik sağlar. Tipik olarak, kayan değerler 32 bit ile temsil edilir, 64 bitte ikiye katlanır ve 96 veya 128 bitte uzun ikiye katlanır.
- İntegral türleri (karakter, tam sayılar ve Boole türlerini içerir). Boole Doğru veya Yanlış: tip değerlerin sadece iki türü vardır. Çoğu uluslararasılaşmayı desteklemek için var olan birkaç karakter türü vardır. En temel karakter türü char'dır. Bir karakter, tek bir makine baytı anlamına gelen tek bayt ile aynı boyuttadır.
İntegral tipleri imzalanmış veya imzasız olabilir.
İmzalı Tür : Negatif veya pozitif sayıları temsil ederler (sıfır dahil). İşaretli bir türde, aralık + ve -ve değerleri arasında eşit olarak bölünmelidir. Bu nedenle, 8 bitlik işaretli bir karakter -127'den 127'ye kadar olan değerleri tutacaktır.
İşaretsiz Tür : İşaretsiz bir türde tüm değerler> = 0'dır. 8 bitlik bir işaretsiz karakter 0 ile 255 (her ikisi dahil) 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 bir kombinasyonundan oluşabilir. İsim uzunluğuna herhangi bir sınır getirilmemiştir.
Tanımlayıcılar gerekir
- bir harf veya alt çizgi ('_') ile 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;
C ++ dili, kullanımı için bazı isimler ayırmıştır.
Farklı programlama dillerinde değişkenleri adlandırmak için kabul edilen birçok kural vardır. Bu kurallara uyulması, programın okunabilirliğini artırabilir.
- Bir tanımlayıcı, anlamının en azından bazı göstergelerini vermelidir.
- Değişken isimler genellikle küçük harfli-guru99'dur, Guru99 veya GURU99 değildir.
- Tanımladığımız sınıflar genellikle büyük harfle başlar.
- Birden çok 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 bir adın program tarafından bilinmesini sağlar. Misal:
int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};
C ++ 'da Const Niteleyici
Kullanıcıdan alınacak girdi sayısını belirten değişken bir buffsize 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.
Böyle bir durumda, const anahtar sözcüğünü kullanın
const int bufSize = 512; // input buffer size
Bu, bufSize'yi bir sabit olarak tanımlar. BufSize'ye atama veya değiştirme girişimi bir hata verir.
Burada, bir const nesnesini oluşturduktan sonra değerini değiştiremeyiz, zorunlu olması ve ilklendirilmesi gerekir. Aksi takdirde derleyici bir hata atar.
const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint i = 42;const int ci = i; // ok: the value in i is copied into ci
C ++ 'daki Değişkenlerin Kapsamı
Kapsam, bir değişkenin bir anlamı olduğu bir program alanıdır. Çoğunlukla aynı ad, farklı kapsamlar içindeki 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.
#includeint main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum < Bu program 3 ad tanımlar, yani, ana, toplam ve değer. Bu ad alanı cout ve endl'den diğer iki adla birlikte std ad alanı adını kullanır.
- "Main" işlev adı küme parantezlerinin dışında tanımlanır. Ana işlev adı, bir işlevin dışında tanımlanan çoğu diğer ad gibi, genel bir kapsama sahiptir. Bu, bir kez ilan edildikten sonra, genel kapsamdaki adlara program boyunca erişilebileceği anlamına gelir .
- Değişken toplam, ana fonksiyonun gövdesi olan bloğun kapsamında tanımlanır. Bildirim noktasından ve ana işlevin gövdesinin geri kalanından erişilebilir. Ancak bunun dışında değil. Bu, değişken toplamın blok kapsamına sahip olduğu anlamına gelir .
- Val değişkeni "for deyimi" kapsamında tanımlanır. Bu ifadede kolayca kullanılabilir, ancak ana işlevin başka bir yerinde kullanılamaz. It has yerel kapsamını .
İç İçe Kapsam
Kapsam başka kapsamlar içerebilir. İçerilen (veya iç içe geçmiş) kapsam, iç kapsam olarak adlandırılır. Kapsayıcı kapsam dış kapsamdır.
#includeusing 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 nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;} Çıktı # 1 , yeniden kullanımın yerel tanımından önce görünür. Böylece bu çıktı
ifadesi, genel kapsamda tanımlanan yeniden kullanılan adı kullanan ifadedir. Bu ifade çıktı
42 0
Çıktı # 2 , yeniden kullanımın yerel tanımından sonra ortaya çıkar. Şimdi kapsamdadır. Bu nedenle, bu ikinci çıktı ifadesi, global nesne yerine reused adlı yerel nesneyi kullanır ve çıktılar
0 0
Çıktı # 3 , kapsam operatörünü kullanarak varsayılan kapsam kurallarını geçersiz kılar. Global kapsamın adı yoktur. Böylece, kapsam operatörü (: :) boş bir sol tarafa sahip olduğunda. Bunu, genel kapsamın sağ tarafındaki adı getirme isteği olarak yorumlar. Böylece, ifade genel olarak yeniden kullanılan ve çıktıları kullanır
42 0
Değişken Tür Dönüşümü
Bir türden bir değişken diğerine dönüştürülebilir. "Tür Dönüştürme" olarak bilinir. Farklı C ++ değişken türlerini dönüştürmek için kuralları görelim:
Bool olmayanın bir bool değişkenine atanması, değer 0 ise false, aksi takdirde true verir.
bool b = 42; // b is trueBool'un diğer aritmetik türlerden birine atanması, bool doğruysa 1, bool yanlışsa 0 verir.
bool b = true;int i = b; // i has value 1İnt türünde bir değişkene bir kayan nokta değeri atamak, kesilen değeri verir. Depolanan değer, ondalık noktadan önceki kısımdır.
int i = 3.14; // i has value 3Float türündeki bir değişkene int değerinin atanması, kesirli parçanın sıfır olmasına neden olur. Tam sayı, kayan değişkenin barındırabileceğinden daha fazla bit içeriyorsa, hassasiyet genellikle kaybolur.
Int i=3;double pi = i; // pi has value 3.0İşaretsiz tipteki bir değişkene aralık dışı bir değer atamaya çalışırsak, sonuç% (modulo) değerinin geri kalanıdır.
Örneğin, 8 bitlik işaretsiz bir karakter türü 0 ile 255 arasındaki değerleri tutabilir. Bu aralığın dışında bir değer atamak, derleyicinin bu değerin geri kalanını modulo 256 atamasıyla sonuçlanacaktır. Bu nedenle, yukarıdaki mantıkla, 8 bitlik işaretsiz bir karaktere -1 ataması, nesneye 255 değerini verir.
unsigned char c = -1; // assuming 8-bit chars, c has value 255İşaretli tipteki bir nesneye aralık dışı bir değer atamaya çalışırsak, sonuç tahmin edilemez. Tanımsız. Program dışarıdan çalışıyor gibi görünebilir, çökebilir veya anlamsız değerler üretebilir.
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefinedDerleyici, diğer türden bir değerin beklendiği bir türden bir değer kullandığımızda bu aynı tür dönüştürmeleri uygular.
int i = 42;if (i) // condition will evaluate as truei = 0;Bu değer = 0 ise, koşul yanlıştır; diğer tüm (sıfır olmayan) değerler true değerini verir. Aynı kavrama 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 kesinlikle yanlıştır.
Dikkat: İşaretli ve İmzasız Türleri Karıştırmayın
İşaretli ve işaretsiz ifadeleri karıştıran ifadeler, işaretli değer negatif olduğunda şaşırtıcı ve yanlış sonuçlar verebilir. Yukarıda tartışıldığı gibi, işaretli değerler otomatik olarak işaretsizlere dönüştürülür.
Örneğin, bir aritmetik ifadede
x* yX -1 ve y 1 ise ve hem x hem de y int ise, beklendiği gibi değer -1'dir.
Eğer x int ve y işaretsiz ise, bu durumda bu ifadenin değeri bir tamsayının derleme makinesinde kaç biti olduğuna bağlıdır. Makinemizde bu ifade 4294967295 verir.
Değişkenleri Kaydedin
Kayıt değişkenlerine erişim, bellek değişkenlerine kıyasla daha hızlıdır. Bu nedenle, bir C ++ programında sıklıkla kullanılan değişkenler, register anahtar sözcüğü kullanılarak kayıtlara yerleştirilebilir . Register anahtar sözcüğü derleyiciye verilen değişkeni bir kayıtta saklamasını söyler. Bir sicile koyup koymamak derleyicinin seçimidir. Genel olarak, derleyicilerin kendileri, bazı değişkenleri kayıt defterine koymayı içeren çeşitli optimizasyonlar yaparlar. Bir C ++ programında yazmaç değişkenlerinin sayısında bir sınır yoktur. Ancak derleyici değişkeni bir kayıt defterinde saklamayabilir. Bunun nedeni, kayıt belleğinin çok sınırlı olması ve genellikle işletim sistemi tarafından kullanılmasıdır.
Tanımlamak için:
register int i;Yorumlar (değiştir | kaynağı değiştir)
Yorumlar, kodun derleyici tarafından göz ardı edilen kısımlarıdır. Programcıya kaynak kodun / programın ilgili alanlarında notlar almasına olanak sağlar. Yorumlar blok biçiminde veya tek satırda gelir. Program yorumları açıklayıcı ifadelerdir. Herkesin kaynak kodunu okumasına yardımcı olan C ++ koduna dahil edilebilir. Tüm programlama dilleri bazı tür yorumlara izin verir. C ++ hem tek satırlı hem de çok satırlı açıklamaları destekler.
- Tek satırlı yorumlar , // ile başlayan ve satırın sonuna kadar devam eden yorumlardır . Bir yorum satırındaki son karakter bir \ ise, yorum sonraki satırda devam eder.
- Çok satırlı yorumlar / * ile başlayan ve * / ile biten yorumlardır.
/* This is a comment *//* C++ comments can also* span multiple lines*/Kaçış dizileri
Geri al ve kontrol karakterleri gibi bazı karakterlerin görünür görüntüsü yoktur. 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 anlamlara sahiptir.
Programlarımız bu karakterlerin hiçbirini doğrudan kullanamaz. Bunun yerine, böyle bir karakteri temsil etmek için bir kaçış dizisi kullanabiliriz. Bir kaçış dizisi ters eğik çizgiyle başlar.
C ++ programlama dili birkaç kaçış dizisini tanımlar:
Bu ne işe yarıyor?
Karakter
Yeni hat
\ n
Dikey sekme
\ v
Ters eğik çizgi
\\
Satırbaşı
\ r
Yatay sekme
\ t
Backspace
\ b
Soru işareti
\?
Form besleme
\ f
Uyarı (zil)
\ a
Çift tırnak
\ "
Tek alıntı
\ '
Tek bir karaktermiş gibi bir kaçış dizisi kullanıyoruz:
cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newlineGenelleştirilmiş kaçış dizileri \ x ve ardından bir veya daha fazla onaltılık rakam da yazabiliriz. Ya da \ ve 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 varsayarak):
\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')Başka herhangi bir karakter kullandığımız için önceden tanımlanmış kaçış dizilerini kullanabiliriz.
cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newlineÖzet
- Bir C ++ değişkeni bize adlandırılmış bir depolama yeteneği sağlar.
- C ++ değişken türleri: int, double, char, 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. "Tür Dönüştürme" olarak bilinir.
- 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 al ve kontrol karakterleri gibi bazı karakterlerin görünür görüntüsü yoktur.