28 Aralık 2020 Pazartesi

Integral Literals

Single Quote İle Okumayı Kolaylaştırmak
C++14'ten itibaren sayıları okumayı kolaylaştırmak için apostrof kullanılabilir.
Örnek
Şöyle yaparız.
int LargeNumber = 1'000'000;
Şöyle yaparız.
int i = 1'000'000'000;
C++ ve C# gibi dillerde short için literal eki mevcut değil. En küçük literal eki int.

Eğer integral sayılar için literal eki kullanılmazsa, int'ten küçük olmamak kaydıyla derleyici sayının sığdığı en küçük int tipi seçer. Örneğin long gibi. Şimdi literal eklerinin detaylarına bakalım.

Integer Literal
Bir öneriyle yeni integer literal ön ekleri teklif edildi. Teklif şöyle

1 int
Bir ek koymaya gerek yok.
auto a = 4 ; // int
2 unsinged int - U eki
Şöyle yaparız.
auto b = 4U ; // unsigned int
3 long int - L eki
Şöyle yaparız.
auto c = 4L ; // long int
4 unsigned long int - UL eki veya LU
Örnek
Şöyle yaparız.
auto foo = 12ul;
Örnek
Şöyle yaparız.
75         // int
75u        // unsigned int
75l        // long
75ul       // unsigned long 
75lu       // unsigned long

3.14159L   // long double
6.02e23f   // float  
5 unsigned long long - ULL
en az 64 bit olan unsigned long long.
Örnek - Atama
Şöyle yaparız.
uint64_t x = 1000000000ull;
Örnek - Bit Shit
Bit kaydırma işlemlerinde şöyle yapmak gerekir.
uint64_t x2 = (1ull << 35ull);
Aynı sonucu şöyle de elde edebiliriz.
auto x = std::uint64_t(1) << 35;
Ayrıca stdint.h dosyasında tanımlı olan UINT64_C macrosu da kullanılabilir.

Örnek - Çarpma
Şöyle yaparız. İlk satırda en baştaki sabitin LL olması yeterli. LL tipi çarpı int tip her zaman LL tipinden çıktı verir
long long int n = 2000LL*2000*2000*2000;
long long int n = 2000LL*2000LL*2000LL*2000LL;

6 float - f
Şöyle yaparız
6.02e23f   // float
int_64_t
Aslında bu bir user defined literal ancak yine de not almak istedim
Örnek
Şöyle yaparız
constexpr std::int64_t operator "" _int64(unsigned long long v)
{ return static_cast<std::int64_t>(v); }

Hiç yorum yok:

Yorum Gönder