سؤال
int x=0;
if(x++)
هاد الشرط شو معناته ايمتا بتحقق وايمتا لا ؟؟؟؟
اذا غيرت القيمة الابتائية عن صفر بيصير ناتج الجملة false
سؤال
int x=0;
if(x++)
هاد الشرط شو معناته ايمتا بتحقق وايمتا لا ؟؟؟؟
اذا غيرت القيمة الابتائية عن صفر بيصير ناتج الجملة false
لا يمكن لهذا الشرط التحقق لانه سوف يعطى compilation error
mohamed salama كتب:لا يمكن لهذا الشرط التحقق لانه سوف يعطى compilation error
لا اذا كانت قيمة x=0 يعطي false غير ذلك العكس
انا اريد ان اعرف لماذاااااااااااااا
اقتباسهاد الشرط شو معناته ايمتا بتحقق وايمتا لا ؟
الشرط if(x++) يحتوي ضمنياً على أمرين يتم تنفيذهما بشكل تتابعي :
if(x != 0)//x = true x = x + 1//increment the value of x
يتحقق الشرط عندما تختلف قيمة x عن الصفر.
و بعد المقارنة تتم زيادة قيمة x بواحد.
تحياتي.
تم تعديل هذه المشاركة بواسطة Sn@CkeR في 12 نوفمبر 2012 في 18:13
C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie
~OoO~________--------------------------------------------________~OoO~
من مواضيعي :
Sn@CkeR كتب:الشرط if(x++) يحتوي ضمنياً على أمرين يتم تنفيذهما بشكل تتابعي :
if(x != 0)//x = true x = x + 1//increment the value of xيتحقق الشرط عندما تختلف قيمة x عن الصفر.
و بعد المقارنة تتم زيادة قيمة x بواحد.
تحياتي.
اخي اريد فقط التحقق من اننا نتكلم عن لغة جافا هنا، واضح ان هذا غير وارد وان لغة جافا تقبل معاملات منطقية فقط في جملة if
مع ذلك قمت بتجربة الكود في نت بينز(على فرض ان هناك قاعده في الJLS لا اعلمه) لكي أتأكد و مع ذلك فإن عملية التجميع تفشل.
وعليه فأنا ارى ان اجابة الاخ محمد سلامه هي الاصح
تحياتي
No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!

مرحبا أخي 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);
}
}تحياتي.
C++ and Java, say, are presumably growing faster than plain C, but I bet C will still be around. ― Dennis Ritchie
~OoO~________--------------------------------------------________~OoO~
من مواضيعي :
المشكلة ليست فى 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");
}
}
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
ما رأيكم فى هذه الدالة 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
اذا لماذا لا يقبلها مباشرة ؟؟؟؟؟؟؟؟؟
﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾
الأنفال ۳۳
MOHAMED FATHEI كتب:ما رأيكم فى هذه الدالة 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
تحياتي
No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!
