Tanımsız durum, (İngilizce: Undefined behavior) programlamada bir standartın bir durumu tanımlayamacağı durumlara denmektedir.
C topluluklarında tanımsız durum bazen mizahi bir yolla "Nasal Demons" (Burun Şeytanları) olarak ifade edilir zira tanımsız durumun sonucunda ne olacağı belli değildir ve bu programcının burnundan şeytanların fışkırmasını dahi "mümkün" kılmaktadır.
Tanımsız durum her zaman bir programlama hatası değildir ve bazı durumlarda program tanımsız durum kullanılarak optimizasyonlar yapılabilir, verimliliği artırılabilir ancak bu programın güvenilirliğini ve stabilitesini etkilemektedir ayrıca derleyicinin bir sürümünde istenen sonucu veren program, başka bir sürümde veya başka bir derleyicide farklı bir sonucu verebilir. Tanımsız durum bazen fark edilmeden bazı kütüphaneler kullanılırken de gerçekleşebilir zira bazı kütüphaneler, bir işaretçinin değerinin NULL olup olmadığını performans nedeni ile kontrol etmez.
Örnekler
C programlama dilindeki yaygın tanımsız durumlar ise: sayı aşımı, bellek dışına okuma/yazma, bellek güvenliğine aykırı durumlar.
Düz dizenin değiştirilmesi tanımsız duruma yol açar:
char *p = "vikipedi"; /* C programlama dilinde doğru, C++98/C++03'te kullanılmaması gerektiği belirtilmekte, C++11'den beri doğru bulunmaz */ p[0] = 'V'; /* tanımsız durum zira düz dizeler sadece okunurdur */
Bir tam sayının sıfırla bölünmesi tanımsız durumdur:
int x = 1; return x / 0; /* tanımsız durum */
Bazı işaretçi işlemleri tanımsız durumla sonuçlanabilir:
int arr[4] = {0, 1, 2, 3}; int *p = arr + 5; /* tanımsız durum sınır dışına gitme */ p = NULL; int a = *p; /* tanımsız durum NULL'un değerini öğrenmek */
Negatif bir sayıya mantıksal işlemler (sol kaydırma) uygulama, bir veri tipinin bit sayısından fazla kaydırma:
int x = -1 << 1; /* 64 bit tam sayıyı 64 ile kaydırmak tanımsız durumdur, maksimum 63 ile kaydırılabilir */ uint64_t vikipedi = 1ULL << 64; return x;
Değer döndürmesi gereken bir fonksiyonda değer döndürmemek:
int f() { } /* eğer fonksiyonun değeri kullanılır ise tanımsız durum */
Ayrıca bakınız
Kaynakça
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Tanimsiz durum Ingilizce Undefined behavior programlamada bir standartin bir durumu tanimlayamacagi durumlara denmektedir C topluluklarinda tanimsiz durum bazen mizahi bir yolla Nasal Demons Burun Seytanlari olarak ifade edilir zira tanimsiz durumun sonucunda ne olacagi belli degildir ve bu programcinin burnundan seytanlarin fiskirmasini dahi mumkun kilmaktadir Tanimsiz durum her zaman bir programlama hatasi degildir ve bazi durumlarda program tanimsiz durum kullanilarak optimizasyonlar yapilabilir verimliligi artirilabilir ancak bu programin guvenilirligini ve stabilitesini etkilemektedir ayrica derleyicinin bir surumunde istenen sonucu veren program baska bir surumde veya baska bir derleyicide farkli bir sonucu verebilir Tanimsiz durum bazen fark edilmeden bazi kutuphaneler kullanilirken de gerceklesebilir zira bazi kutuphaneler bir isaretcinin degerinin NULL olup olmadigini performans nedeni ile kontrol etmez OrneklerC programlama dilindeki yaygin tanimsiz durumlar ise sayi asimi bellek disina okuma yazma bellek guvenligine aykiri durumlar Duz dizenin degistirilmesi tanimsiz duruma yol acar char p vikipedi C programlama dilinde dogru C 98 C 03 te kullanilmamasi gerektigi belirtilmekte C 11 den beri dogru bulunmaz p 0 V tanimsiz durum zira duz dizeler sadece okunurdur Bir tam sayinin sifirla bolunmesi tanimsiz durumdur int x 1 return x 0 tanimsiz durum Bazi isaretci islemleri tanimsiz durumla sonuclanabilir int arr 4 0 1 2 3 int p arr 5 tanimsiz durum sinir disina gitme p NULL int a p tanimsiz durum NULL un degerini ogrenmek Negatif bir sayiya mantiksal islemler sol kaydirma uygulama bir veri tipinin bit sayisindan fazla kaydirma int x 1 lt lt 1 64 bit tam sayiyi 64 ile kaydirmak tanimsiz durumdur maksimum 63 ile kaydirilabilir uint64 t vikipedi 1ULL lt lt 64 return x Deger dondurmesi gereken bir fonksiyonda deger dondurmemek int f eger fonksiyonun degeri kullanilir ise tanimsiz durum Ayrica bakinizDerleyiciKaynakca nasal demons 29 Mart 2004 tarihinde kaynagindan arsivlendi Erisim tarihi 12 Haziran 2014 ISO IEC 2003 2 13 4 String literals lex string para 2 ISO IEC 2003 5 6 Multiplicative operators expr mul para 4 ISO IEC 2003 5 7 Additive operators expr add para 5