اینکه خود کد رو درج می کردید خیلی بهتر موضوع رو شرح میداد تا اینکه روال کد رو توصیف کنید. اندیس ها با مقدار 0 شروع میشه، نه یک، به همین جهت اگر رشته 6 کاراکتر طول داشته باشه، اون کاراکتر ششم در خانه شماره 5 قرار داره، نه شماره 6
جدول اولویت عملگر ها رو اینجا ببینید، هر چقدر عملگر بالاتر باشه اولویت بیشتری داره و زودتر محاسبه میشه :
https://en.cppreference.com/w/cpp/la...tor_precedence
عملگر ++ نسبت به عملگر * اولویت داره، پس اول باید ++a محاسبه بشه و بعد نتیجه اش در a ضرب بشه. ++a که نباید با a++ اشتباه گرفته بشه، مقدار a رو یک واحد افزایش میده ولی مقداری که برمیگردونه قبل از افزایش ئه، یعنی a رو 3 می کنه ولی مقدار 2 رو بر میگردونه. بنابر این نتیجه محاسبه ++a عدد 2 میشه، ولی مقدار a رو به 3 تغییر میده.
در ادامه اون 2 حاصل از ++a در مقدار a (که 3 شده) ضرب میشه، یعنی 2 * 3
اگر بجای ++b = a * a کد b = a * ++a اجرا میشد، حاصل 9 بود، چون a++ مقدار a رو افزایش میده و همون مقدار افزایش یافته رو هم برمیگردونه، نه مقدار قبل از افزایش.