Несколько основных вопросов C - PullRequest
2 голосов
/ 24 апреля 2009

Я человек, который пытается изучать C, но я застрял в нескольких моментах, когда выполнял свои проекты:

1) Как именно можно реализовать генерацию случайных целых чисел? Я нашел Google и нашел код для генерации от 0 до x с приведенным ниже кодом, но как насчет двух целых чисел, которые я выбрал (например, между X и Y)?

int random;
random = random(100);

2) Как я могу установить переменную в NULL в начале (как в Java) и манипулировать ею, если она NULL? Например, я хочу добиться следующего:

int a = null;
if (a == null){
    a = 3;
}

Ответы [ 4 ]

9 голосов
/ 24 апреля 2009

1) int r = random (Y - X) + X;

2) Целые числа не могут быть нулевыми ни в C, ни в Java. В Си только указатели могут быть нулевыми, представленные указанием их на ноль. Тем не менее, я советую вам не разбираться со всем беспорядком указателя, пока не разберетесь с основами.

1 голос
/ 24 апреля 2009

1- Как именно можно реализовать генерацию случайных целых чисел [...]

См. FAQ 13.15 и FAQ 13.16 - последний явно отвечает на этот вопрос.

2- Как мне установить переменную null в начале

Для чисел с плавающей запятой и целочисленных типов вы присваиваете им магическое значение 0. Для указателей вы можете присвоить их 0 (снова) или макросу NULL.

0 голосов
/ 24 апреля 2009

В C вы часто видите следующее:

int x = -1;
if (x == -1) { x = 3; } else { /* do nothing */ }

Предполагается, что тип значения фактически не имеет знака или, по крайней мере, -1 не является допустимым значением. Вы также можете сделать:

#define UNINITIALIZED    ((int8_t) -128) /* -128 has no inverse with 8-bit */
...
int8_t x = UNINITIALIZED;
if (x == UNINITIALIZED) { x = 3; } else { /* do nothing */ }
0 голосов
/ 24 апреля 2009

Чтобы получить нужный диапазон (y-x), умножьте каждое случайное число на (y-x). Чтобы они начинались с x и заканчивались y, добавьте x к каждому числу (уже умноженному на (y-z)). Предположим, что y> x.

int i;

for (i = 0; i < NrOfNumers; i++)
{
   randomNumberSequence[i] = randomNumberSequence[i]*(y-x) + x;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...