Hatalar, hatalar, sorular - sayfa 2116
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
İşlev bağımsız değişkenleri sağdan sola doğru değerlendirilmez
Satır sonucu (*) : 0:5041
Her iki durumda da beklenen: 0:0
İşlev bağımsız değişkenleri sağdan sola doğru değerlendirilmez
Satır sonucu (*) : 0:5041
Her iki durumda da beklenen: 0:0
Bu bir hata değil. Derleyici, argümanları hangi sırayla değerlendireceğine karar verir.
Sadece bunu hesaba katmalısın.
Bu bir hata değil. Derleyici, argümanları hangi sırayla değerlendireceğine karar verir.
Hata aşağıdaki gibidir: yakın zamana kadar, sipariş kesinlikle https://www.mql5.com/ru/forum/1111/page2040#comment_5858419 tarafından belirlendi (tarihe ve belgelerden alıntıya dikkat edin: garantili ). Sonra sıra sessizce değiştirildi (belgelerde dahil) ve medeni bir şekilde değiştirilebilir - satır içi https://www.mql5.com/ru/forum/1111/page2042#comment_5860752 . Kullanıcı bunu nasıl bilebilir? Tahmin etmek? Veya herhangi bir aracı kullanmadan önce belgelere bakın?
Derleme hataları ve daha fazlası
Hata aşağıdaki gibidir: yakın zamana kadar, sipariş kesinlikle https://www.mql5.com/ru/forum/1111/page2040#comment_5858419 tarafından belirlendi (tarihe ve belgelerden alıntıya dikkat edin: garantili ). Sonra sıra sessizce değiştirildi (belgelerde dahil) ve medeni bir şekilde değiştirilebilir - satır içi https://www.mql5.com/ru/forum/1111/page2042#comment_5860752 . Kullanıcının bunu nasıl bilmesi gerekiyor? Tahmin etmek? Veya herhangi bir aracı kullanmadan önce belgelere bakın?
Argümanların değerlendirildiği sıraya bağlı olarak kod yazmanız gerekmez.
C++'da derleyici, satır içi anahtar sözcüğü olmasa bile bir işlevi satır içi yapma hakkına sahiptir.
MQL'de satır içi anahtar kelime yoktur, derleyici uygun gördüğü şekilde yalnızca satır içi çalışır.
Sağdan sola değerlendirme sırası, bu sıradaki argümanların yığına itilmesinden kaynaklanıyor gibi görünüyor.
ancak kayıtlar aracılığıyla da aktarılabilirler.
Ve yerleşik işlevler için, hiçbir şekilde geçen bir argüman yoktur.
1. Sadece argümanların değerlendirildiği sıraya bağlı olarak kod yazmanız gerekmez.
2. C++'da derleyici, satır içi anahtar sözcüğü olmasa bile bir işlevi satır içi yapma hakkına sahiptir.
3. MQL'de satır içi anahtar sözcük yoktur, derleyici satır içi yalnızca kendi takdirine bağlı olarak çalışır.
4. Sağdan sola değerlendirme sırası, görünüşe göre, bu sıradaki argümanların yığına yerleştirilmesi gerçeğinden kaynaklanıyordu,
ama sonuçta bunlar kayıtlar aracılığıyla aktarılabilir.
5. Ve yerleşik işlevler için, bu şekilde hiçbir argüman geçmez.
1. Belgeler tarafından ters sıra garanti edildiyse ve aynı zamanda kodun daha basit ve daha anlaşılır olduğu ortaya çıktıysa neden gerekli değil. Aynı başarı ile, 5 + 2 * 3 işlemlerinin önceliğinin kullanımı reddedilebilir ve aniden değiştirilmesi durumunda parantez (5 + (2 * 3)) her yere yerleştirilmesini isteyebilir.
2. C++ derleyicisi, böyle bir durum dışında, satır içi işlevlere belirli gereksinimler getirir https://www.mql5.com/ru/forum/1111/page2136#comment_6454818
3. Bu yüzden tanıtılması önerildi
4. Kayıtlarda (yığından farklı olarak), argümanlar ters dahil olmak üzere herhangi bir sıraya yerleştirilebilir.
5. Sıra önemlidir, aktarım değil, argümanların hesaplanması. Ve birden fazla argümana sahip herhangi bir fonksiyon içindir. Ve C++ bunu satır içi bir işlev yapmadan (veya yapmadan) önce hesaba katar (2. maddeye bakın)
1. Belgeler tarafından ters sıra garanti edildiyse ve aynı zamanda kodun daha basit ve daha anlaşılır olduğu ortaya çıktıysa neden gerekli değil. Aynı başarı ile, 5 + 2 * 3 işlemlerinin önceliğinin kullanımı reddedilebilir ve aniden değiştirilmesi durumunda parantez (5 + (2 * 3)) her yere yerleştirilmesini isteyebilir.
2. C++ derleyicisi, böyle bir durum dışında, satır içi işlevlere belirli gereksinimler getirir https://www.mql5.com/en/forum/1111/page2136#comment_6454818
3. Bu yüzden tanıtılması önerildi
4. Kayıtlarda (yığından farklı olarak), argümanlar ters dahil olmak üzere herhangi bir sıraya yerleştirilebilir.
5. Sıra önemlidir, aktarım değil, argümanların hesaplanması. Ve birden fazla argümana sahip herhangi bir işlev içindir. Ve C++ bunu satır içi bir işlev yapmadan (veya yapmadan) önce hesaba katar (2. maddeye bakın)
3. Sana ne vereceğini bilmiyorum. Derleyicinin, satır içi açıkça belirtmeden işlevleri satır içine almasını engellemek istiyor musunuz?
2. Ne demek istediğini anlamıyorum.
4. Böyle bir emrin ve iptalinin neyle bağlantılı olduğunu varsaydım. Bunun tesadüfen yapılmadığını düşünüyorum ve şimdi her zaman böyle olacak. Bunda korkunç bir şey yok.
5. yanılıyorsunuz. C++'da argümanların değerlendirildiği sıra tanımlanmamıştır.
1. Uzun yıllardır C++ ile yazıyorum ve bunu hiçbir zaman bir problem olarak görmedim.
3. Sana ne vereceğini bilmiyorum. Derleyicinin, satır içi açıkça belirtmeden işlevleri satır içine almasını engellemek istiyor musunuz?
4. Böyle bir emrin ve iptalinin neyle bağlantılı olduğunu varsaydım. Bunun tesadüfen yapılmadığını düşünüyorum ve şimdi her zaman böyle olacak. Bunda korkunç bir şey yok.
5. yanılıyorsunuz. C++'da argümanların değerlendirildiği sıra tanımlanmamıştır.
3. Derleyicinin satır içi olmayan işlevler için argümanların değerlendirme sırasını değiştirmesini yasaklamayı önerdim.
5. Değerlendirme sırası uygulama (derleyici) tarafından belirlenir ve oldukça spesifiktir (sağdan sola veya soldan sağa), ancak burada örneğin:
2-1-3 veya 2-3-1'in ne olduğu veya başka ne olduğu hiç belli değil
Sonuç: 5041:0:5041
Beklenen: 0:0:5041 soldan sağa veya
5041:0:0 sağdan sola
2-1-3 veya 2-3-1'in ne olduğu veya başka ne olduğu hiç belli değil
Neden açıkça belirsiz kod yazdığını anlamıyorum?
Neden açıkça belirsiz kod yazdığını anlamıyorum?
Sizin için benzer bir soru https://www.mql5.com/ru/forum/1111/page2037#comment_5842347