• 0
محمد1991

تتبع مخرجات if

سؤال

سؤال

int x=0;

if(x++)

هاد الشرط شو معناته ايمتا بتحقق وايمتا لا ؟؟؟؟

اذا غيرت القيمة الابتائية عن صفر بيصير ناتج الجملة false

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

8 إجابة على هذا السؤال .

  • 0

لا يمكن لهذا الشرط التحقق لانه سوف يعطى compilation error

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا يمكن لهذا الشرط التحقق لانه سوف يعطى compilation error

لا اذا كانت قيمة x=0 يعطي false غير ذلك العكس

انا اريد ان اعرف لماذاااااااااااااا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

هاد الشرط شو معناته ايمتا بتحقق وايمتا لا ؟

الشرط if(x++) يحتوي ضمنياً على أمرين يتم تنفيذهما بشكل تتابعي :

if(x != 0)//x = true
x = x + 1//increment the value of x

يتحقق الشرط عندما تختلف قيمة x عن الصفر.

و بعد المقارنة تتم زيادة قيمة x بواحد.

تحياتي.

تم تعديل بواسطه [email protected]
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الشرط if(x++) يحتوي ضمنياً على أمرين يتم تنفيذهما بشكل تتابعي :

if(x != 0)//x = true
x = x + 1//increment the value of x

يتحقق الشرط عندما تختلف قيمة x عن الصفر.

و بعد المقارنة تتم زيادة قيمة x بواحد.

تحياتي.

اخي اريد فقط التحقق من اننا نتكلم عن لغة جافا هنا، واضح ان هذا غير وارد وان لغة جافا تقبل معاملات منطقية فقط في جملة if

مع ذلك قمت بتجربة الكود في نت بينز(على فرض ان هناك قاعده في الJLS لا اعلمه) لكي أتأكد و مع ذلك فإن عملية التجميع تفشل.

وعليه فأنا ارى ان اجابة الاخ محمد سلامه هي الاصح

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مرحبا أخي metnal :)

نعم, إجابتي كانت أقرب لــ C++ من Java.

المثال الذي وضعه الأخ يُكافئ الكود التالي في الجافا :

public class NewClass {
public static void main(String[] args){
boolean x = false;
if(!x)
System.out.println("x = "+x);
else
System.out.println("x = "+x);
}
}

تحياتي.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المشكلة ليست فى post increment لكن فى انها تحتاج الى معامل منطقى يعطى اما True او False

اذا نفس الشرط يمكن كتابته مع الحفاظ على استخدام ++ بهذه الطريقة



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;

/**
*
* @author Mohamed Fathei
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
int x = 0;
if (x++ > 0) {
System.out.println("X > 0\n");
return;
}

System.out.println("X <= 0\n");
}
}


0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما رأيكم فى هذه الدالة isDigit



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;

/**
*
* @author Mohamed Fathei
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
char x = '9';
if (isDigit(x)) {
System.out.println("X is digit \n");
} else {
System.out.println("X is not digit \n");
}

}

static boolean isDigit(char x) {
// Note bitwise and (&) instead of logical and (&&)
return (x >= '0' & x <= '9');
}
}


هى تستخدم bitwise and داخل ال condition terms ومع ذلك يقبلها المترجم Compiler

أظن أن & دائما تعيد قيمة رقمية وليست بوليانية او منطقية

ثم يحولها المترجم الى منطقية بنفس المبدأ فى لغة ++C

اذا لماذا لا يقبلها مباشرة ؟؟؟؟؟؟؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ما رأيكم فى هذه الدالة isDigit



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;

/**
*
* @author Mohamed Fathei
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
char x = '9';
if (isDigit(x)) {
System.out.println("X is digit \n");
} else {
System.out.println("X is not digit \n");
}

}

static boolean isDigit(char x) {
// Note bitwise and (&) instead of logical and (&&)
return (x >= '0' & x <= '9');
}
}


هى تستخدم bitwise and داخل ال condition terms ومع ذلك يقبلها المترجم Compiler

أظن أن & دائما تعيد قيمة رقمية وليست بوليانية او منطقية

ثم يحولها المترجم الى منطقية بنفس المبدأ فى لغة ++C

اذا لماذا لا يقبلها مباشرة ؟؟؟؟؟؟؟؟؟

الداله isDigit يتم عمل evaluation لها ثم تعيد قيمة boolean بينما x++ تعيد قيمه عدديه وهنا يكمن الفرق ، الامر كما لو انك عرفت isDigit لتعيد int فهذه الحاله هل ستعمل؟

المعامل & يتم تفسيره حسب نوع المعاملات ويكون bitwise عندما تقارن قيم integral types . بقية المعلومات في JLS

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .