Clarification regarding Postfix Increment Operator ++ :java

后端 未结 5 525
情深已故
情深已故 2020-12-17 04:30
int i = 0;
boolean b = true;
System.out.println(b && !(i++ > 0))

When I compile the above code I

相关标签:
5条回答
  • 2020-12-17 04:52
    b && !(i++ > 0)
    

    i++ is post increment so value of i here is still 0

    0>0 false

    b && 1 is true(since !(0) is 1)

    So you are getting true.

    0 讨论(0)
  • 2020-12-17 04:54

    You can see how ++ operator works on following example:

    public static void main(String[] argv) {
        int zero = 0;
        System.out.println(zero++);
        zero = 0;
        System.out.println(++zero);
    }
    

    Result is: 0 1

    0 讨论(0)
  • 2020-12-17 04:55
    i++
    

    the increment happens after the line is executed so you better keep

    ++i
    
    0 讨论(0)
  • 2020-12-17 05:00

    Java behaving correctly :)

    i++
    

    That is postfix increment.

    It generated result and then incremented that value later.

    !(i++ > 0) // now  value is still zero
    

    i++ will use the previous value of i and then it will increment it.

    When you use ++ ,it's like

    temp=i;
    i += 1; 
    i=temp;     // here old value of i.
    

    language specification on Postfix Increment Operator ++

    the value 1 is added to the value of the variable and the sum is stored back into the variable. ......

    The value of the postfix increment expression is the value of the variable before the new value is stored.

    Possible solution would be ++i, which is as per your requirment,

    Prefix Increment Operator ++

    The value of the prefix increment expression is the value of the variable after the new value is stored.

    0 讨论(0)
  • 2020-12-17 05:00

    You want to use ++i if you want to increment i and return the incremented value. i++ returns the non incremented value.

    0 讨论(0)
提交回复
热议问题