Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 1
Регистрация: 06.08.2012
Сообщений: 54
Записей в блоге: 1
1

Каким будет результат компиляции и выполнения данного кода?

20.02.2013, 20:01. Показов 1961. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Каким будет результат компиляции и выполнения данного кода?
Java
1
2
3
4
5
6
7
public class A {
    public static void main(String[] args) {
        for (int i = 0; ++i > 0;  ) {
            System.out.println(i);
        }
    }
}
Ответ:Напечатает все числа от 1 до 2^31 - 1

Подскажите как без IDE придти к этому ответу.3-ю строчку кода поясните
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2013, 20:01
Ответы с готовыми решениями:

Каким будет результат выполнения?
Добрый день! Подскажите, каким будет следующий элемент программы: a =? b =? И сколько раз...

Каков будет результат выполнения след кода ?
Point p1 ={null,{new Point(1,1)}}; Point p2 = (Point)p1.clone(); P1= new Point{new Point(2,2)};...

Каким будет результат компиляции и выполнения данного кода?
void main(void) { char alphabet ; int index; for (letter = "A", index = 0; letter <= "Я";...

Каким будет результат компиляции и выполнения данного кода?
struct employee { char name ; int office_number; }; using namespace std; void main(void) {...

10
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
20.02.2013, 20:19 2
Структура цикла:

for(Начальное значение, Условие Выполнения, Шаг)
{
Тело Цикла;
}

Если шаг не указан, то он будет по умолчанию 1.

Значит, начинаем с 0 и инкрементируем с каждым шагом. Далее идет условие - пока i больше 0, цикл работает.

На что еще обращаем внимание, на тип данных. Здесь он int -> 32 бита. Какое максимальное значение можно представить 32 битами? Конечно 11111...1 = 2^31 - 1. Если к нему добавить еще 1, то получим -2^31. Это не подходит по условию, а значит цикл останавливается.
1
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
20.02.2013, 20:23 3
3-я строчка: увеличиваем i на единицу. Сравниваем i c нулем. Если больше нуля - выполняем тело цикла.
i увеличивается начиная с 0, выводится начиная с единицы - так как тело цикла выполняется после увеличения i.
Максимальное допустимое значение целого числа int = 2^31 = 0b01111111_11111111_11111111_11111111
Если к 2^31 прибавить единицу, то получится такое число: 0b10000000_00000000_00000000_00000000 = -2^31
Это число меньше нуля - на нем и заканчивается выполнение цикла.

Добавлено через 1 минуту
Цитата Сообщение от HOLKIDOR Посмотреть сообщение
Подскажите как без IDE придти к этому ответу
Для этого необходимо знать диапазон представляемых целых чисел int. И знать, что происходить при переполнении.
1
50 / 48 / 7
Регистрация: 31.10.2011
Сообщений: 98
20.02.2013, 20:24 4
Цитата Сообщение от Fonduee Посмотреть сообщение
Если шаг не указан, то он будет по умолчанию 1.
Никаких "шагов по умолчанию" в for нет - переменная i инкрементируется в части, где проверяется условие. (++i)
0
1 / 1 / 1
Регистрация: 06.08.2012
Сообщений: 54
Записей в блоге: 1
20.02.2013, 20:26  [ТС] 5
Спасибо.Совсем забыл, что int имеет конечное значение.В этом мой промах
0
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
20.02.2013, 20:30 6
Цитата Сообщение от serejkus Посмотреть сообщение
Никаких "шагов по умолчанию" в for нет - переменная i инкрементируется в части, где проверяется условие. (++i)
Почитайте книги прежде, чем лезть со своими комментариями.
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
20.02.2013, 21:56 7
Я там сверху перепутал. Максимально значение int равно https://www.cyberforum.ru/cgi-bin/latex.cgi? 2^{31}-1, конечно же.
0
50 / 48 / 7
Регистрация: 31.10.2011
Сообщений: 98
20.02.2013, 22:42 8
Цитата Сообщение от Fonduee Посмотреть сообщение
Почитайте книги прежде, чем лезть со своими комментариями.
Java не родной язык, поэтому прошу совета - какие книжки надо почитать про "шаг по умолчанию" в такой форме for? В спецификации не нашёл. Когда-то давно каноническим был Хорстман, так ли это сейчас?
0
Музыка нас Связала
232 / 232 / 52
Регистрация: 26.03.2008
Сообщений: 616
20.02.2013, 23:48 9
Цитата Сообщение от serejkus Посмотреть сообщение
Java не родной язык, поэтому прошу совета - какие книжки надо почитать про "шаг по умолчанию" в такой форме for? В спецификации не нашёл. Когда-то давно каноническим был Хорстман, так ли это сейчас?
Примите мои извинения.
0
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
21.02.2013, 07:17 10
Цитата Сообщение от serejkus Посмотреть сообщение
какие книжки надо почитать про "шаг по умолчанию" в такой форме for?
Какие-то странный вещи вы написали. Нет никакого шага по умолчанию. В вашем коде написано ++i - увеличение на единицу на каждой итерации.
Приведенный вами for - практически в том же виде будет абсолютно также работать в C/C++/C# и др. языках.
1
2586 / 2259 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
21.02.2013, 12:03 11
Цитата Сообщение от turbanoff Посмотреть сообщение
Нет никакого шага по умолчанию.

Не по теме:

он уже извинился за поспешность не давите зря

0
21.02.2013, 12:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2013, 12:03
Помогаю со студенческими работами здесь

Каким будет результат выполнения фрагмента кода?
int main(int argc, char* argv) { char c; cout <<"input num\n"; cin >>c; switch...

Каков будет результат выполнения кода?
подскажите, пожалуйста, каков результат выполнения будет для кода #define PRINT(int)...

Каков будет результат выполнения следующего кода?
Каков будет результат выполнения следующего кода, а именно: вводится "12-3"; что будет в...

Каков будет результат выполнения следующего кода?
#include <iostream.h> #include <conio.h> #pragma hdrstop int main (int argc, char** argv) {...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru