Şamandıralar ve Ints Kullanımı Hakkında C ++ Eğitimi

click fraud protection

İnt, ondalık ayırıcısı olmayan 47 gibi bir tamsayıdır. 4.5 bebeğiniz olamaz veya 32.9 kez ilmek yapamazsınız. Bir şamandıra kullanırsanız $ 25.76 alabilirsiniz. Dolayısıyla, programınızı oluştururken hangi türün kullanılacağına karar vermelisiniz.

Bazı komut dosyası dillerinin yaptığı budur? Verimsiz olduğundan, şamandıralar daha fazla bellek alır ve genellikle ints'tan daha yavaştır. Ayrıca, iki şamandırayı ints ile eşit olup olmadığını görmek için kolayca karşılaştıramazsınız.

Numaraları değiştirmek için hafızaya kaydetmeniz gerekir. Değer kolayca değiştirilebildiğinden, değişken olarak adlandırılır.

derleyici programınızı okuyan ve makine koduna dönüştüren programın ne tür olduğunu, yani int veya float olduğunu bilmesi gerekir, bu nedenle programınız bir değişken kullanmadan önce, bildirmek o.

Counter değişkeninin 0 olarak ayarlandığını göreceksiniz. Bu isteğe bağlı bir başlatmadır. Değişkenleri başlatmak çok iyi bir uygulamadır. Bir başlangıç ​​değeri belirlemeden kodları ilklendirmez ve sonra kullanmazsanız, değişken kodunuzu 'kırabilecek' rastgele bir değerle başlar. Değer, program yüklendiğinde bellekte olan değer olacaktır.

instagram viewer

Bir int'in depolayabileceği en büyük sayı nedir?. Şey, türüne bağlıdır İşlemci ancak genellikle 32 bit olarak kabul edilir. Pozitif kadar neredeyse negatif değeri tutabildiğinden, değer aralığı +/- 2'dir-32 2'ye32 veya -2.147.483.648 ila +2.147.483.647.

Bu imzalı bir int içindir, ancak imzasız sıfır veya pozitif tutan int. 0 ila 4.294.967.295 aralığındadır. Sadece hatırlıyorum - imzasız atların önünde bir işaret (+ veya -1 gibi) olması gerekmez, çünkü her zaman pozitif veya 0'dır.

Daha kısa bir int tipi vardır, tesadüfen 16 bit (2 bayt) kullanan kısa int denir. Bu, -32768 ile +32767 aralığındaki sayıları tutar. Büyük bir ints umber kullanıyorsanız, kısa ints kullanarak muhtemelen bellek tasarrufu yapabilirsiniz. Yarım büyüklüğüne rağmen daha hızlı olmayacak. 32 Bit CPU'lar değerleri bir seferde 4 baytlık bloklar halinde bellekten alır. Yani 32 bit (Dolayısıyla adı - 32 Bit CPU!). Yani 16 bit getirmek hala 32 bit getirmeyi gerektirir.

Daha uzun bir 64 bit var uzunca C cinsinden Bazı C ++ derleyicileri bu türü desteklemezken doğrudan alternatif bir ad kullanır (ör. hem Borland hem de Microsoft kullanımı _int64. Bu, -9223372036854775807 ila 9223372036854775807 (imzalı) ve 0 ila 18446744073709551615 (imzasız) aralığına sahiptir.

Çok büyük veya küçük sayılarla bilimsel programlama yapmadığınız sürece, yalnızca daha fazla hassasiyet için çiftleri kullanırsınız. Şamandıralar 6 basamaklı doğruluk için iyidir, ancak çiftler 15 sunar.

567.8976523 sayısını düşünün. Geçerli bir şamandıra değeridir. Ancak aşağıdaki kodla yazdırırsak, hassasiyet eksikliğinin göründüğünü görebilirsiniz. Rakamın 10 hanesi vardır, ancak yalnızca altı basamaklı bir doğrulukla bir float değişkeninde saklanmaktadır.

Görmek Giriş ve Çıkış Hakkında cout'un nasıl çalıştığı ve hassasiyetin nasıl kullanılacağı hakkında ayrıntılar için. Bu örnekte çıkış hassasiyeti 8 rakama ayarlanmıştır. Ne yazık ki şamandıralar sadece 6 tutabilir ve bazı derleyiciler bir çiftin şamandıraya dönüştürülmesi hakkında bir uyarı yayınlar. Çalıştırıldığında bu yazdırılır 567.89764

Hassasiyeti 15 olarak değiştirirseniz, 567.897644042969 olarak yazdırılır. Oldukça büyük bir fark! Şimdi, ondalık ayırıcıyı ikinci sola hareket ettirin, böylece değer 5.678976523 olur ve programı yeniden çalıştırın. Bu kez 5.67897653579712 çıktı. Bu daha doğru ama yine de farklı.

Değer türünü iki katına ve hassasiyeti 10 olarak değiştirirseniz, değeri tam olarak tanımlandığı gibi yazdırır. Genel bir kural olarak, şamandıralar küçük, tamsayı olmayan sayılar için kullanışlıdır, ancak 6 basamaktan fazla ise iki kat kullanmanız gerekir.

Toplama, çıkarma vb. Yapamazsanız bilgisayar yazılımı yazmak çok işe yaramaz. Örnek 2.

Toplamanın yanı sıra çıkarma, çarpma ve bölme de yapabilirsiniz. Toplama için +, çıkarma için *, çarpma ve / bölme için * kullanın.

Şamandıralarda, hassasiyeti daha önce gösterildiği gibi ayarlamadığınız sürece kaç ondalık noktanın görüntüleneceği konusunda hiçbir kontrole sahip değilsiniz.

Artık genişlik, hizalama, ondalık basamak sayısı ve işaretler cout nesne ve iomanip dosya işlevlerini içerir.

Binlerce ayırıcı biraz daha karmaşıktır. Bir bilgisayarın yerel ayarından ayarlanırlar. Bir yerel ayar, ülkenizle ilgili para birimi sembolleri ve ondalık ayırıcı ve binlerce ayırıcı gibi bilgileri içerir. İngiltere ve ABD'de 100.98 sayısı ondalık nokta kullanır. ondalık nokta olarak, bazı Avrupa ülkelerinde virgül olduğu için 5,70 €, 5 Euro ve 70 sentlik bir fiyat anlamına gelir.

bir nesne yaratır mpunct ki bu bir moneypunct şablon sınıfı. Bu, belirtilen yerel ayar hakkında bilgi içerir - bizim durumumuzda, thousands_sep () yöntemi binlerce ayırıcı için kullanılan karakteri döndürür.

Not Nasıl farklı derleyiciler arasında tutarsızlıklar var gibi görünüyor cout.imbue davranacağını. Visual C ++ 2005 Express Edition altında bu ayırıcılar dahil. Ancak Microsoft Visual C ++ 6.0 ile aynı kod vermedi!

Bu iki biçimlendirme modundan birini cout.setf sonra hassas() ondalık noktadan sonraki ondalık basamak sayısını belirler (toplam basamak sayısını değil), ancak bin biçimlendirmeyi kaybedersiniz. Ayrıca sondaki sıfırlar (tarafından etkinleştirildiği gibi) ios_base:: gösteri noktası ) gerek kalmadan otomatik olarak etkinleştirilir showpoint.

11.0909090909 değeri gibi bir şey beklersiniz. Aslında, değer 11'dir. Bu neden? Çünkü ifade sağ tarafta ( rvalue) tamsayı / tamsayıdır. Bu nedenle kesirli kısmı atar ve 11'den f'ye atayan tamsayı aritmetiği kullanır. Olarak değiştiriliyor

C'de, böyle bir tür yoktur bool. C'deki ifadeler sıfırın yanlış olmasına veya sıfır olmayanın doğru olmasına dayanıyordu. C ++ 'da tür bool değerleri alabilir doğru veya yanlış. Bu değerler hala 0 ve 1'e eşittir. Derleyicinin bir yerinde bir

Ya da en azından bu şekilde davranıyor! Aşağıdaki iki çizgi döküm olmadan geçerlidir, bu yüzden perde arkasında, bools örtülü olarak ints dönüştürülür ve bu çok kötü bir uygulama olmasına rağmen artırılabilir veya azaltılabilir.

İf değişkeni if ​​hatalı değişken olarak sıfırdan farklı yapar ancak hatalı koddur ve bundan kaçınılmalıdır. İyi uygulama, amaçlandıkları gibi kullanmaktır. eğer (! v) geçerli C ++ ama daha açık tercih ederim eğer (v! = 0). Ancak bu bir tat meselesidir, yapmalı direktif.

derleyicinin derleme zamanında hataları yakalaması, çalışma zamanında kullanıcıdan daha iyidir

instagram story viewer