Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Объясните строки кода (http://www.tehnari.ru/f42/t252430/)

Кристина1998 02.03.2017 08:23

Объясните строки кода
 
#include <stdio.h>
#include <iostream>
#include <ctime>


int
fun ()
{
static unsigned int num = 0;
num++;
return num % 2;
}

int
myrand ()
{
int random = rand () % RAND_MAX;
int mynum = 0;
for (int i = 0; i < random; i++)
{
mynum += fun ();
}
return mynum;
}

int
main ()
{
srand (time (NULL));
for (int i = 0; i < 30; i++)
printf ("%d\n", myrand ());
return 0;
}

AlexZir 02.03.2017 09:05

слушаю, объясняйте...

Кристина1998 02.03.2017 19:30

Вложений: 1
Цитата:

Сообщение от AlexZir (Сообщение 2465792)
слушаю, объясняйте...

static unsigned int num = 0; //объявляем статическую переменную числа, которая в теле функции не будет изменяться
num++; //увеличиваем значение
return num % 2; //возвращаем число и ...

int
myrand ()
{
int random = rand () % RAND_MAX; //выводим числа рандомна
int mynum = 0;
for (int i = 0; i < random; i++) // ...
{
mynum += fun ();
}
return mynum;
}
int
main ()
{
srand (time (NULL));
for (int i = 0; i < 30; i++)
printf ("%d\n", myrand ());
return 0;
}

AlexZir 02.03.2017 20:16

Вы и сами все прекрасно понимаете, зачем что-то объяснять :)

Кристина1998 02.03.2017 20:43

Цитата:

Сообщение от AlexZir (Сообщение 2465955)
Вы и сами все прекрасно понимаете, зачем что-то объяснять :)

Нет,я не понимаю это: for (int i = 0; i < random; i++)
и return num % 2;
и тут for (int i = 0; i < 30; i++)

Николай_С 02.03.2017 23:10

Цитата:

Сообщение от Кристина1998 (Сообщение 2465936)
//объявляем статическую переменную числа, которая в теле функции не будет изменяться

Чет я озадачен...
А у каждого числа имеется переменная? А почему она не будет изменяться? Она же переменная... ;)

Почитайте конструкцию оператора цикла For для Си и всё поймете.

AlexZir 03.03.2017 09:27

Цитата:

Сообщение от Кристина1998 (Сообщение 2465961)
for (int i = 0; i < random; i++)

Цикл от 0 до текущего случайного числа

Цитата:

Сообщение от Кристина1998 (Сообщение 2465961)
return num % 2

стандартный оператор, возвращающий значение функции

Цитата:

Сообщение от Кристина1998 (Сообщение 2465961)
for (int i = 0; i < 30; i++)

цикл от 0 до 29

alex_kireev 08.01.2018 15:27

Хоть я и не от мира сего, но позвольте дать ВАМ ещё один совет.

Р. Лафор "Объектно-ориентированное программирование в С++"
Почитайте и ВЫ найдёте ответы на свои вопросы.

Olej 14.01.2018 19:24

Цитата:

Сообщение от alex_kireev (Сообщение 2546508)
Хоть я и не от мира сего, но позвольте дать ВАМ ещё один совет.

Зачем писать такую вот херню - то ли рекламу, то ли не умную саморекламу?

Olej 14.01.2018 19:31

Цитата:

Сообщение от Кристина1998 (Сообщение 2465936)
static unsigned int num = 0; //объявляем статическую переменную числа, которая в теле функции не будет изменяться
num++; //увеличиваем значение
return num % 2; //возвращаем число и ...

А вот это место достаточно интересное:
Код:

int fun () {
  static unsigned int num = 0;
  num++;
  return num % 2;
}

- num как-раз внутри функции будет изменяться...
- будет инкрементироваться, сохраняя своё значение между последовательными вызовами fun() - именно из-за объявления static
- а возвращаемое fun() значение будет чередоваться через каждые 2 последовательных вызова ... примерно вот так: 1, 0, 1, 0, 1, 0 ... и так далее.


Часовой пояс GMT +4, время: 18:42.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.