سؤال

while(((long)(1000*ratio*((long)clock()-(long)t0))%100)/1000)<Data_Read_Rate);

السطر أعلاه يولد الخطأ التالي:"خطأ في بناء الجملة قبل <الرمز المميز".

لماذا يأتي هذا الخطأ؟

أستخدم MINGW32 للتطوير (مترجم دول مجلس التعاون الخليجي).

شكرًا...

هل كانت مفيدة؟

المحلول

قوس واحد مفقود على اليسار.هذا سوف يحلل:

while ((((long)(1000*ratio*((long)clock()-(long)t0))%100)/1000)<Data_Read_Rate);

بخلاف مسألة التحليل:

  • استخدم محررًا يبرز الأقواس المتطابقة :)
  • لماذا لا تحسب الوقت المتبقي حتى ينخفض ​​معدل قراءة البيانات بدرجة كافية وتستدعي السكون ()؟هذا أجمل على المعالج.

أيضًا، مع الأخذ في الاعتبار استخدامك لعامل التشغيل %، قد ترغب في وضع القوس الإضافي على هذا النحو (أفترض نسبة ليس عددًا صحيحًا)، لأن عامل التشغيل % يتطلب معاملات عددية صحيحة:

while (((long)(1000*ratio*(((long)clock()-(long)t0))%100)/1000)<Data_Read_Rate);

(ولكن هل هذا منطقي على المستوى الدلالي؟اقطعها!)

نصائح أخرى

لديك الكثير من قوس إغلاق.

وبالاضافة الى ذلك، المنطق الخاص بك هو وقتا طويلا وعميقا بأن لا يهمني في محاولة لمعرفة ما يجب أن يكون رمز. مجرد أن vim يسلط الضوء على ) آخر باللون الأحمر، وهذا يعني انها غير متطابقة. أقترح عليك أن تنظر في استخدام بعض المتغيرات الوسيطة وتبسيط منطق هذا البيان من خلال نشر ذلك في بضعة أسطر بدلا من واحد.

<قوسين ليست مطابقة. راجع للشغل، وأنا في الواقع تحرير رمز وتقسيمها إلى عبارات متعددة لجعله أكثر قابلية للقراءة.

ولأن المترجم يحصل الخلط كما حول التعليمات البرمجية وقارئ البشري؟ [قشعريرة]

والمسافات وفواصل الأسطر هي مجانا، وإضافة لطيف لسهولة القراءة.

    while ( ( (long)( 1000 * ratio * ( (long)clock() - (long)t0 ) ) % 100 ) / 1000 ) < Data_Read_Rate );

هل يمكن أن نتخلص من (طويل) يلقي على مدار الساعة () وT0 أيضا (على افتراض انهم على حد سواء كثافة العمليات). سوف يلقي عليها قبل الطرح لن يغير النتيجة. لجعل الحساب كله في فترة طويلة، سيكون كافيا لجعل <م> واحدة الحجج فترة طويلة - واقصر الطرق للقيام بذلك يلقي الحرفي 1000:

while ( ( ( 1000l * ratio * ( clock() - t0 ) ) % 100 ) / 1000 ) < Data_Read_Rate );

وهممم ... الانتظار. كنت تأخذ شيئا، مودولو 100 (مما أسفر عن عدد يتراوح بين 0 و 99)، ومن ثم تقسيم بحلول عام 1000؟ نتيجة الخاص بك هو دائما 0 ...

وأوه، وكنت قد نسيت لتتناسب مع أقواس الخاص بك. ؛ -)

كما ذكرنا سابقًا، فإن الأقواس غير متطابقة.

مع تعبيرات مثل هذه، من الأفضل دائمًا العمل مع بعض المتغيرات المؤقتة لتبسيط العبارة.ومع ذلك فإن النصائح التالية قد تساعد.

  1. قم بعد الأقواس بإضافة 1 لكل "(" وطرح 1 لكل ")" يجب أن تصل دائمًا إلى إجابة 0.الإجابة الإيجابية تعني أن لديك إضافة "("الإجابة السلبية أن لديك زيادة")".
  2. أعد تنسيق التعبير لتسهيل قراءته، وربما تقسيمه إلى عدة أسطر، بحيث تكون كل عبارة منطقية في سطر واحد.
  3. استخدم محرر التعليمات البرمجية لتسليط الضوء على بناء الجملة.يجب أن يُظهر هذا عدم التطابق بالنسبة لك

وكنت في عداد المفقودين قوسين واحد على الجانب الأيسر.

وكنت قد الكثير من افتتاح وقوس إغلاق. إذا كنت تستخدم استوديو البصرية، وسوف تساعدك على مباراة الافتتاح والختام paranthesis / هدفين باستخدام السيطرة + '[' و Ctrl + '] الضغط على مفتاح

واقتراح آخر هو مجموعة وتقسيمها إلى عدة أسطر من خلال الحفاظ على سهولة قراءة التعبيرات. أيضا في محاولة لإعطاء مساحة بين قوسين لاحق من قبل لمنطقيا مجموعة من التعبيرات.

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