مرحباً، بعدما أخفقت في البحث عن المشكلة في الويب قررت نشرها هنا.

اليكم الكود أولا:

#include <iostream>
using namespace std;
int main() {
    int x;
    cout <<"Entrer your number: "; 
    cin >> x;

    if (x > 0) {
        cout <<"Positive";
    } 
    else if (x == 0) {
        cout <<"Null";
    } 
    else if (x < 0) {
        cout <<"Negative";
    }
    else {
    cout <<"Invalid number";
   }
}

الكود يؤدي وضيفته عادي لكن لو أدخلت كلمة أو حرف فستكون النتيجة Null أي أنه فهمها 0 ونفس الأمر في ال c عندما أعدت كتابة الكود حسب الsyntax خاصتها أعطاني نفس النتيجة Null.. أعدت كتابة الكود بالجافاسكريبت فأعطاني النتيجة المتوقعة Invalid number وهذا ما جعلني أعتقد أنها مشكلة في اللغتين الآنفتين فقط.

قمت البارحة بنشر هذا السؤال في موقع sololearn بإنجليزيتي الركيكة فجائني رد واحد لم أفهمه جيدا يقول:

http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt

"If extraction fails (e.g. if a letter was entered where a digit is expected), value is left unmodified and failbit is set. (until C++11)

If extraction fails, zero is written to value and failbit is set. (since C++11)"


سؤال آخر: هل هناك طريقة لأصنع جملة شرط كهذه if ( x != char ) أي التحقق أنّ المدخلات ليست حروف وليست جمل؟؟

وشكرا مسبقا على الإجابات الكثيييرة التي ستصلني هههه مجتمع الحاسوب :)