سؤال

ولقد ألقيت نظرة على 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top