2013-08-01 4 views
3

Ниже мой фрагмент кода на C.почему же код в двух технологий ведут себя разные

void main(){ 
int x = 7; 
x = x++; 
printf("%d",x); 
} 

выход: 8

public static void main(String[] args){ 

     int x = 7; 

     x = x++; 
     System.out.println(x); 
    } 

выход: 7

я не получаю, почему и язык давая разные результаты. Я упоминается ниже ссылке What is x after "x = x++"?

+1

Первый фрагмент кода - [Неопределенное поведение] (http://en.wikipedia.org/wiki/Undefined_behavior) в C. –

+0

тот же пост, что и этот знаменитый !!! [Ссылка здесь] [1] [1]: http://stackoverflow.com/questions/7911776/what-is-x-after-xx?lq=1 – user2497624

+1

Где это говорят, что они должны вести себя тоже самое? – EJP

ответ

2

В Java после х ++, не существует каких-либо изменений в стоимости x

х = х ++; равно

int i= x; 
x = x + 1; 
x = i; 

так x остается такой же, как я

Вы можете прочитать здесь: Why are these constructs (using ++) undefined behavior?

+0

Почему это эквивалентно int i = x; x = x + 1; x = i; в java не в C –

+0

@RohitKumar Пожалуйста, перейдите по ссылке, прилагаемой. –

0

Во втором примере присвоение первого сохраняет значение х, то устанавливает х в его значение плюс 1 и, наконец, , сбрасывает х обратно на свое исходное значение. Вид:

int temp=x; 
x=x+1; 
x=temp; 
0
x=x++; 

Это дает произвольные результаты в C, в основном, в зависимости от компилятора. Читайте о sequential points в C. Вы можете обратиться к C Programming от Dennis ritchie.

Смежные вопросы