6

(++i)++ tanımsız davranış? Önek artışının yan etkisinin, işlemek için art arda artırılan nesne üzerinde çalıştıktan sonra gerçekleşmesi mümkün mü? Bu bana tuhaf geliyor.(++ i) ++ tanımsız davranış mı?

Yoksulluk hislerimin C++ 03'te tanımlanmamış ve C++ 11'de iyi tanımlanmış olduğunu söylüyor. Ben haklı mıyım

+0

Senin bağırsak hissi haklı. – ybungalobill

+43

Neden bu kadar çok kişi bu konuda soru soruyor? Sadece yapma. Kimin umurunda - ** Bu korkunç bir koddur ve hiçbir zaman yazılmamalı. ** – jjnguy

+12

@jjnguy: "Hiçbir zaman yazılmamalı" ile "hiçbir şey önemli olmayan üretim kodunda asla kullanılmamalıdır" ." Öğrenmek için bilinen kötü kodları yazmak genellikle iyidir. Kontrollü bir şekilde işler başarısız olur, öngörülen hataları test eder vb. – David

cevap

11

Yığın hissim, bunun C++ 03'te tanımlanmamış ve C++ 0x'da iyi tanımlanmış olduğunu söylüyor.

Evet haklısınız. Davranış, C++ 03'te tanımlanmamıştır çünkü iki sıra noktası arasında i'u bir kereden fazla değiştirmeye çalışıyorsunuzdur.

Bu davranış, (++i)++'un (i += 1)++'a eşdeğer olması nedeniyle C++ 0x'de iyi tanımlanmıştır. += operatörünün yan etkileri, ++ (post artım) değerine göre sıralanır ve böylece davranış iyi tanımlanmıştır.

0

Bu, i iki dizilim noktası arasında birden çok kez değiştirilmekte olduğundan tanımlanmamış bir davranıştır.