powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / help
12 сообщений из 12, страница 1 из 1
help
    #38311530
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объясните пожалуйста по-простому каким же образом тут результатом будет 137 ??

public class Test {
public static void main(String[] s) {
for (int i = 2; i < 10; i = (i++) + i--, i++) {
System.out.print(--i);
}
}
}
...
Рейтинг: 0 / 0
help
    #38311586
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 2-1=1(print) 1+1+2-1=3, 3+1=4 -> следующая итерация
4 4-1=3(print) 3+1+4-1=7, 7+1=8 -> следующая итерация
8 8-1=7(print) 7+1+8-1=15, 15+1=16 >=10, выход из цикла

x++ - инкремент после использования переменной
++x - инкремент до использования переменной
то же самое с минусами
...
Рейтинг: 0 / 0
help
    #38311650
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже, не совсем правильно, хотя результат верный.
Скорее всего, i = (i++) + i-- надо интерпретировать как i = i + (i+1):
- первый аргумент для сложения i, значение i увеличили
- второй аргумент для сложения i=i+1, значение i уменьшили
- i присвоили результат операции сложения, то есть i+(i+1)

2 2-1=1(print) 1+2=3, 3+1=4 -> следующая итерация
4 4-1=3(print) 3+4=7, 7+1=8 -> следующая итерация
8 8-1=7(print) 7+8=15, 15+1=16 >=10, выход из цикла

Короче, лучше не пишите такой код :)
...
Рейтинг: 0 / 0
help
    #38311692
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra,

спасибо за разъяснение..)это просто вопрос из тестов, хочу понять
...
Рейтинг: 0 / 0
help
    #38311698
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitasyaivanra,
спасибо за разъяснение..)это просто вопрос из тестов, хочу понять
Тестов??? Умение вычислять значение i+++++i, по-моему, достаточно бесполезный скил.
...
Рейтинг: 0 / 0
help
    #38311743
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VitasyaОбъясните пожалуйста по-простому каким же образом тут результатом будет 137 ??
Код: java
1.
2.
3.
for (int i = 2; i < 10; i = i * 2) {
	System.out.print(i - 1);
}
...
Рейтинг: 0 / 0
help
    #38311752
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУмение вычислять значение i+++++i, по-моему, достаточно бесполезный скил.Ну, уж точно для участника IOCCC :
http://www.ioccc.org/2011/dlowe/dlowe.c
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#define _ float

                  _ CRUSH(_*LEG,int ARM,_*FINGER) {
         _ GORE; for(GORE=0,--ARM; ARM>=0; --ARM)GORE+=FINGER[ARM]*ARM
     [LEG]; return GORE; } _*BITE(){ _*BRAIN=calloc(sizeof(_),1<<17);int TOE
  =getc(stdin),EYE,SKULL=0; while((EYE=getc(stdin))!=EOF){ ++BRAIN[(TOE<<8) +
 EYE]; ++SKULL; TOE=EYE; } if(SKULL)for(TOE=0; TOE<8<<13; ++ TOE)BRAIN [TOE]/=
 SKULL; return BRAIN; } _ CHEW(_*GUT,_ BONE[][1<<16]){ int GRR; for(GRR=0; GRR<
 6; ++GRR){ GUT[GRR+256*256]=powf(1+expf(-CRUSH(BONE[GRR],1<<16,GUT)),-1); BONE
 [6][50+GRR]=GUT[256*256+GRR]*(1.-GUT[(8<<13)+GRR]); } BONE[6][81]=1/(1 +expf(-
 CRUSH(GUT+(1<<16),6,BONE[6]))); return BONE[6][82]=BONE[6][81]*(1.-BONE[6][81]
 ),BONE[6][81]; } _ GNAW(_ FLESH,_ LEG[][2<<15],_*EYE){ int UG,MMM; LEG[6][13]=
 FLESH-CHEW(EYE,LEG); LEG[6][14]=LEG[6][ 82]*LEG[6][13]; for(UG=0; UG<6; ++UG){
 LEG[6][34]=LEG[6][UG+(1<<7)-14]*LEG[6][7<<1]*LEG[6][UG]; for(MMM=0; MMM<4<<14;
 ++MMM)LEG          [UG][MMM]+=LEG[6][34]*.3*EYE[MMM]; LEG[6][UG]+=.3*LEG[6][14
  ]*EYE[               256*256+UG]; } return powf(LEG[6]          [13],2); } _
  **EAT(               char*TOMB){ DIR*BONE = opendir(               TOMB); int
  BRAIN=               0; struct dirent*TOOTH; _**BODY               =0; while
 (BONE?(TOOTH=        readdir(BONE)):0){ if(  TOOTH->                d_name[0]
 !=46){ char*MOAN=malloc(strlen(TOMB)+strlen(TOOTH->d_name       )+1); sprintf(
 MOAN, "%s%s",TOMB,TOOTH ->d_name); if(freopen(MOAN, "r",stdin)){ BODY=realloc(
 BODY,sizeof(_*)*(BRAIN+1)); BRAIN ++ [BODY]=BITE(); } } } return BODY=realloc(
 BODY,(1+BRAIN)*sizeof(_*)),BODY[BRAIN]=0,BODY; } int main(int GRR,char **UGH){
 _ BRAINS[7][1<<16],***CORPSES; int PUS,OOZE,UG; for(srand(time(0)),PUS=0; PUS<
  7; ++PUS)for(OOZE=0; OOZE<4<<14; ++OOZE)BRAINS[PUS][OOZE]=rand()/(_)RAND_MAX
   -.5;fread(BRAINS,sizeof(BRAINS),1,stdin); if(*UGH[1]==45){ GRR-=2; CORPSES
    =malloc(                                                         sizeof(_
    **)*GRR                                                           ); for(
     PUS=0;                                                             PUS<
    GRR; ++             PUS)CORPSES[PUS]=EAT(UGH[2+PUS]);             for(UG=
     0; UG<atoi       (&(UGH[1][1])); ++UG){ BRAINS[6][97]=       0; for(PUS
      =0; PUS<GRR; ++PUS)for(OOZE=0; CORPSES[PUS][OOZE]; ++OOZE)BRAINS [6][
        97]+=GNAW(1.-(_) PUS/(GRR-1),BRAINS,CORPSES[PUS][OOZE]); fprintf(
         stderr,"%d: %f\n",UG,BRAINS[6][97]); } fwrite( BRAINS, sizeof(
          BRAINS),1,stdout); } else for(UG=1; UG<GRR; ++UG)if(freopen(
              UGH[UG],"r",stdin))fprintf(stderr,"%s %f\n",UGH[UG],
                       CHEW(BITE(),BRAINS)); return 0; }


P.S.
Offtop
...
Рейтинг: 0 / 0
help
    #38321199
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объясните пожалуйста почему результатом будет 3 ?
public class example{
public static void main(String[] args){
int h = 5; do while(h-->15); while(--h>4);
System.out.println(h);
}
}
...
Рейтинг: 0 / 0
help
    #38321495
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vitasya,

А почему не должна? h уменьшили два раза. 5-2=3.
...
Рейтинг: 0 / 0
help
    #38322028
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxkar,

Хорошо а если тут результат будет 3?
public class example{
public static void main(String[] args){
int h = 11;
do while(h-->15);
while(--h>4);
System.out.println(h);
}
}

то здесь уже результат станет 4? почему так?

public class example{
public static void main(String[] args){
int h = 10;
do while(h-->15);
while(--h>4);
System.out.println(h);
}
}
...
Рейтинг: 0 / 0
help
    #38322189
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот этот цикл
Код: java
1.
do while(h-->15); while(--h>4);


можно представить как
Код: java
1.
do while(h-->15) {} while(--h>4);


это конечно хак и никто так не пишет, но на самом деле это допустимая конструкция, и факт в том, что второй while в конце цикла игнорирует результат сравнения в первом.
А теперь отнимайте по 2 от 11 и от 10 и поймете почему результаты будут разные
...
Рейтинг: 0 / 0
help
    #38322311
Vitasya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanra,

да вот что-то никак не дойдёт((
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / help
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]