0Pricing
C++ Academy · Ders

constexpr ve Derleme Zamanı

Değerleri derleme zamanında hesaplayın

constexpr ve Derleme Zamanı, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

Derleme Zamanında Değerlendirilebilirlik Ne Anlama Gelir

constexpr, bir değerin veya işlevin derleme zamanında değerlendirilebileceğini ve gerçek bir derleme zamanı sabiti üretebileceğini derleyiciye bildirir.

#include <iostream>

int main() {
    constexpr int size = 4 * 4;   // computed at compile time
    int arr[size];
    std::cout << sizeof(arr) / sizeof(int) << "\n";
}

Derleme Zamanı İşlevleri

constexpr bir işlev, sabit bağımsız değişkenlerle çağrıldığında derleme zamanında, aksi durumda ise çalışma zamanında çalışabilir.

#include <iostream>

constexpr int square(int x) { return x * x; }

int main() {
    constexpr int s = square(5);   // compile time
    int n = 6;
    std::cout << s << " " << square(n) << "\n";  // second at runtime
}

Dizilerde Derleme Zamanı Sabitleri

constexpr değerleri derleme zamanında bilindiği için dizilerin boyutunu belirleyebilir ve şablon bağımsız değişkeni olarak kullanılabilir.

Derleme Zamanı Sabitleri ve Sabitlik Karşılaştırması

const, "değiştirilemez"; constexpr ise "derleme zamanında bilinir" anlamına gelir. Her constexpr örtük olarak sabittir, ancak her sabit constexpr değildir.

#include <iostream>

int main() {
    int x;
    std::cin >> x;
    const int a = x;        // const but runtime value
    constexpr int b = 10;   // compile-time constant
    std::cout << b << "\n";
}

Özyinelemeli Derleme Zamanı İşlevleri

Derleme zamanı işlevleri özyinelemeli olabilir; böylece derleyici, faktöriyel gibi hesaplamaları program çalışmadan önce yapabilir.

#include <iostream>

constexpr long factorial(int n) {
    return n <= 1 ? 1 : n * factorial(n - 1);
}

int main() {
    constexpr long f = factorial(5);  // 120 at compile time
    std::cout << f << "\n";
}

Modern C++'ta Daha Gelişmiş Derleme Zamanı İşlevleri

C++14'ten bu yana derleme zamanı işlevleri döngülere, yerel değişkenlere ve dallanmalara sahip olabilir; bu da karmaşık sabitleri derleme zamanında hesaplamanızı sağlar.

#include <iostream>

constexpr int sumTo(int n) {
    int total = 0;
    for (int i = 1; i <= n; ++i) total += i;
    return total;
}

int main() {
    constexpr int s = sumTo(100);
    std::cout << s << "\n";
}

Derleme Zamanı Değişkenleri Derleme Zamanında Başlatılmalıdır

constexpr olarak tanımlanan bir değişkenin, derleme zamanında değerlendirilebilen bir başlatıcısı olmalıdır; aksi hâlde program derlenmez.

Derleme Zamanı Hesaplamasının Faydaları

Hesaplamayı derleme zamanında yapmak, çalışma zamanı maliyetini ortadan kaldırır, değerlerin sabit bağlamlarda kullanılmasını sağlar ve hataların daha erken algılanmasına olanak tanır.

Derleme Zamanı Sabitleri ve Şablonlar

Derleme zamanı sabitleri, boyutların ve parametrelerin derleme zamanı sabitleri olması gereken şablonlar ve std::array ile doğal biçimde birlikte kullanılır.

Çalışma Zamanına Geri Dönüş

Bir constexpr işlevi sabit olmayan bağımsız değişkenler alırsa normal bir işlev gibi çalışma zamanında çalışır; hata oluşmaz.

Sabitler İçin Derleme Zamanı Sabitlerini Tercih Edin

Gerçek sabitler (boyutlar, matematiksel hesaplamalar ve arama tabloları) için constexpr kullanın. Bu, const'tan daha açıklayıcıdır ve derleme zamanı garantileri sağlar.

Kısa Kontrol

Derleme zamanı sabitleri konusundaki anlayışınızı sınayın.

Özet

constexpr'ın değişkenleri ve işlevleri derleme zamanında değerlendirmeyi sağladığını, yalnızca değişikliği yasaklayan const'tan farklı olduğunu, modern C++'ta döngüleri ve özyinelemeyi desteklediğini ve sabit olmayan girdiler verildiğinde çalışma zamanına geri döndüğünü öğrendiniz.

Sıkça Sorulan Sorular

“constexpr ve Derleme Zamanı” dersi ücretsiz mi?

Evet — “constexpr ve Derleme Zamanı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“constexpr ve Derleme Zamanı” dersinde ne öğreneceğim?

Değerleri derleme zamanında hesaplayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“constexpr ve Derleme Zamanı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. const Değişkenleri ve Parametreleri
  2. const Üye İşlevleri
  3. constexpr ve Derleme Zamanı
  4. consteval ve constinit
← C++ Academy Sayfasına Dön