subexpressions ترتيب التقييم
سؤال
ولقد ألقيت نظرة على SO / IEC 9899 : 201x تحت J.1 السلوك غير محدد:
"The order in which subexpressions are evaluated and the order in which side effects
take place, except as specified for the function-call (), &&, ||, ?:, and comma
operators (6.5)."
هل يعني ذلك أنه في
func1() + func2();
وfunc2 () يمكن بريفورميد قبل func1 ()، أو حتى أثناء func1 ()؟
المحلول
في المعيار الحالي (ISO / IEC 9899: 1999) وهناك نقطة تسلسل بين المكالمات وظيفة ولكن ترتيب التقييم من المعاملات إلى +
لم يتم تحديد ذلك يمكن أن يسمى func1
قبل أو بعد func2
لكن باستدعاء الدالة بد منه لا تداخل أو أن معشق بأي شكل من الأشكال.
وهذا يعني أن كل من func1
وfunc2
تستطيع، إذا رغبت في ذلك، تتفاعل مع بعض البيانات المشتركة دون الحاجة أن تغير البيانات تحته بطريقة غير متوقعة.
نصائح أخرى
وليس خلال، ولكن بالتأكيد، إما 1 ثم 2 أو 2 ثم 1.
لا تنتمي إلى StackOverflow