C6297

تحذير C6297: تجاوز سعة حسابي: القيمة من 32 بت هو إزاحة، ثم يقوم بتحويل القيمة 64 بت. النتيجة قد لا تكون القيمة المتوقعة

Th هو التحذير يشير إلى قواعد سلوك غير الصحيحة التي تنتج من ترقية متكاملة وقم بكتابة بقعة صغيرة من تلك الموجودة في أي الحسابي هو تنفيذها بشكل عام.

في هذه الحالة، القيمة 32 بت تم إزاحة لليسار، وتم تحويل نتيجة ذلك shift إلى القيمة 64 بت. إذا تجاوزت Shift زر زر القيمة 32 بت، يتم فقدان وحدات البت.

إذا كنت لا تريد إلى بت، قم بتحويل القيمة إلى نقل إلى كمية 64 بت قبل فإنه يتم إزاحتها. إذا أردت أن تفقد بت، سيتم التخلص من هذا التحذير أداء فريق العمل المناسب لغير الموقعة طويلة نوعا قصير أو masking النتيجة الوردية وإجراء الهدف من تعليمات برمجية واضحة أكثر.

مثال

يلي تعليمات برمجية ينشئ هذا التحذير:

void f(int i)
{
  unsigned __int64 x;

  x = i << 34;
  // code 
}

إلى تصحيح هذا التحذير، استخدم تعليمات برمجية التالية:

void f(int i)
{
  unsigned __int64 x;
  // code
  x = ((unsigned __int64)i) << 34;
}

راجع أيضًا:

المرجع

برنامج التحويل البرمجي C4293 تحذير (المستوى 1)