«language-lawyer» etiketlenmiş sorular

Programlama dillerinin ve ortamlarının resmi veya yetkili teknik özelliklerinin karmaşıklığı hakkındaki sorular için.

9
Yeni standart sürümlerle C ++ 'da hiç sessiz davranış değişiklikleri oldu mu?
(Listeyi değil, noktayı kanıtlamak için bir veya iki örnek arıyorum.) C ++ standardındaki bir değişikliğin (örneğin 98'den 11'e, 11'den 14'e vb.) Mevcut, iyi biçimlendirilmiş, tanımlanmış davranışlı kullanıcı kodunun davranışını sessizce değiştirdiği hiç oldu mu? yani, daha yeni standart sürümle derlerken herhangi bir uyarı veya hata olmadan? Notlar: Uygulayıcı / derleyici …

7
C'de dizi başlatma hakkında kafa karışıklığı
C dilinde, şöyle bir dizi başlatırsanız: int a[5] = {1,2}; bu durumda, dizinin açıkça başlatılmamış tüm öğeleri örtük olarak sıfırlarla başlatılacaktır. Ama şöyle bir dizi başlatırsam: int a[5]={a[2]=1}; printf("%d %d %d %d %d\n", a[0], a[1],a[2], a[3], a[4]); çıktı: 1 0 1 0 0 Anlamıyorum, neden yerine a[0]yazdırıyor ? Tanımlanmamış bir …

8
"Else if" tek bir anahtar kelime mi?
C ++ 'da yeniyim. Sık sık aşağıdaki gibi koşullu ifadeler görüyorum: if statement_0; else if statement_1; Soru: Sözdizimselelse if olarak tek bir anahtar kelime muamelesi yapmalıyım ? Yoksa aslında aşağıdaki gibi ifdışta iç içe geçmiş bir ifade elsemi? if statement_0; else if statement_1;

7
Ana işlev yerine main adlı global değişkene sahip bir program nasıl çalışabilir?
Aşağıdaki programı düşünün: #include <iostream> int main = ( std::cout << "C++ is excellent!\n", 195 ); Windows 7 işletim sisteminde g ++ 4.8.1 (mingw64) kullanarak, program derler ve iyi çalışır, yazdırır: C ++ mükemmeldir! konsola. mainbir işlevden ziyade global bir değişken olarak görünür; bu program fonksiyon olmadan nasıl çalışabilir main()? …

2
"C ++ Programlama Dili" 4. baskı bölüm 36.3.6'daki bu kod iyi tanımlanmış davranışa sahip mi?
Bjarne Stroustrup'un The C ++ Programming Language 4. basım bölümünde 36.3.6 STL-like Operations bölümünde zincirleme örneği olarak aşağıdaki kod kullanılmıştır : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( "even" ), 4, "only" …

8
Uygulama tanımlı davranıştan kaçınarak etkili imzasız-imzalı çevrim
Bir unsigned intbağımsız değişken alan ve bağımsız değişkene intUINT_MAX + 1 uyumlu bir modulo döndüren bir işlev tanımlamak istiyorum . İlk deneme şuna benzeyebilir: int unsigned_to_signed(unsigned n) { return static_cast<int>(n); } Ancak herhangi bir dil avukatının bildiği gibi, INT_MAX'tan daha büyük değerler için imzasızdan imzalıya geçiş uygulama tanımlıdır. Bunu, (a) …



4
Neden (sadece) bazı derleyiciler aynı dize değişmezleri için aynı adresi kullanıyor?
https://godbolt.org/z/cyBiWY 'some'MSVC tarafından oluşturulan assembler kodunda iki değişmezi görebiliyorum , ancak sadece bir tanesi clang ve gcc ile. Bu, kod yürütmenin tamamen farklı sonuçlarına yol açar. static const char *A = "some"; static const char *B = "some"; void f() { if (A == B) { throw "Hello, string merging!"; …


2
Ekstra parantezlerin operatör önceliği dışında ne zaman bir etkisi olur?
C ++ 'daki parantezler birçok yerde kullanılır: örneğin, operatör önceliğini geçersiz kılmak için işlev çağrılarında ve ifadeleri gruplandırmada. Geçersiz fazladan parantezlerin (işlev çağrısı bağımsız değişken listeleri etrafındaki gibi) dışında, C ++ 'nın genel -ama mutlak değil- kuralı, ekstra parantezlerin asla zarar vermemesidir : 5.1 Birincil ifadeler [ifade.prim] 5.1.1 Genel [expr.prim.general] …

3
@Classmethod ve def method (self) ne zaman kullanmalıyım?
Daha önce kullanmadığım bir Django uygulamasını entegre ederken, sınıflarda işlevleri tanımlamak için kullanılan iki farklı yol buldum. Yazar ikisini de çok isteyerek kullanıyor gibi görünüyor. İlki benim çok kullandığım şey: class Dummy(object): def some_function(self,*args,**kwargs): do something here self is the class instance Diğeri ise kullanmadığım, çoğunlukla ne zaman kullanacağımı ve …



8
Tanımlanmamış davranışa sahip dalların erişilemez olduğu ve ölü kod olarak optimize edilebileceği varsayılabilir mi?
Şu ifadeyi düşünün: *((char*)NULL) = 0; //undefined behavior Açıkça tanımlanmamış davranışa neden olur. Belirli bir programda böyle bir ifadenin varlığı, tüm programın tanımsız olduğu veya davranışın yalnızca kontrol akışı bu ifadeye ulaştığında tanımsız hale geldiği anlamına mı gelir? Kullanıcının numarayı hiç girmemesi durumunda aşağıdaki program iyi tanımlanmış olur 3mu? while …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.