خطأ في المقارنة في C: المؤشر مقابل عدد صحيح
عند محاولة تجميع وظيفة بسيطة من كتاب C لـ Bjarne Stroustrup، الطبعة الثالثة، المطورين قد يواجه خطأ وقت الترجمة:
error: ISO C forbids comparison between pointer and integer
تنشأ هذه المشكلة عند مقارنة المؤشر بعدد صحيح. في الكود المقدم:
#include
#include
using namespace std;
bool accept()
{
cout > answer;
if (answer == "y") return true;
return false;
}
يظهر الخطأ في عبارة if حيث تتم مقارنة الإجابة بسلسلة حرفية ("y"). نظرًا لأن الإجابة عبارة عن متغير حرف، فيجب مقارنتها بحرف ثابت.
الحل
هناك حلان لهذه المشكلة:
استخدم متغير السلسلة:
قم بتعريف الإجابة كنوع سلسلة بدلاً من الحرف. سيسمح لك هذا بمقارنة الإجابة بسلسلة حرفية بشكل صحيح:
string answer;
if (answer == "y") return true;
استخدم ثابت الحرف:بدلاً من مقارنة الإجابة بسلسلة حرفية، استخدم ثابت الحرف محاطة بعلامات اقتباس مفردة:
if (answer == 'y') return true; // Note single quotes for character constant
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3