495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
1 | |
NULL или проверка инициализации07.03.2015, 23:26. Показов 16695. Ответов 24
Метки нет (Все метки)
Есть функция которая возвращает число... если выполнилось условие, в обратном случае NULL, или ничего(можно и так) . Проблема в том, что я читал что NULL не совпадает ни с одним числом и значением в программе, наверно обманули... Потому что NULL == 0;
Вобщем код был таким if(x != NULL ){...} А мне возвращало NULL как 0 и я долго думал почему не работает. Так вот чем бы таки заменить NULL, что бы можно было провести такую проверку???. Может есть ли какая нибудь "пустая переменная" типа int x - "пустая".?? Спасибо!
0
|
07.03.2015, 23:26 | |
Ответы с готовыми решениями:
24
Указатель при инициализации не равен NULL Проверка на NULL строки типа Int Что быстрее, проверка на null, или проверка на тип перечисления в запросе? Проверка на 0 или NULL |
Модератор
13706 / 10909 / 6473
Регистрация: 18.12.2011
Сообщений: 29,125
|
||||||
07.03.2015, 23:31 | 2 | |||||
NULL - это абстракция
1
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
07.03.2015, 23:35 [ТС] | 3 |
Так что мне теперь использовать? Потому что приходится сидеть и говнокодить, а не хочется, с моим опытом и так код не очень хороший, а тут еще и такое.
0
|
Модератор
13706 / 10909 / 6473
Регистрация: 18.12.2011
Сообщений: 29,125
|
|
07.03.2015, 23:40 | 4 |
Поскольку предполагается сравнение указателей, то все резонно,
нулевой указатель означает, что он реально ничего дельного не адресует. Так что, Ваши беспокойства напрасны.
1
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
||||||
08.03.2015, 00:02 [ТС] | 5 | |||||
Нет, все равно не работает с нулем.
0
|
Комп_Оратор)
|
|
08.03.2015, 00:17 | 6 |
_Valera_, в С++ техника возвращения нуля возможна лишь для указателей (из встроенных типов). Это значит, что можно лишь при доступе через указатель или класс обёртку, где реализуется обнуляемый тип (nullable).
Последний вариант придётся поровнокодить. Данный класс содержит значение и булеву переменную вроде is_assigned или is_initiated. Если срабатывает конструктор без параметров такая переменная устанавливается в false. Потом везде проверять... С указателем ведь почти тоже самое.
1
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
08.03.2015, 00:24 | 7 |
2
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
||||||
08.03.2015, 00:29 [ТС] | 8 | |||||
Не очень понял, можете поровнокодить))) мой код, который выше.
пока я додумался сделать так:
Добавлено через 1 минуту А библиотека какая?
0
|
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
|
08.03.2015, 00:31 | 9 |
1
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
08.03.2015, 00:35 [ТС] | 11 |
Она внешняя, то есть ее к вс подключать надо, скачивать и тд.... ??
Добавлено через 45 секунд А это не очень плохо ??? Ну в рамках хорошего кода?
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
|
||||||
08.03.2015, 00:40 | 12 | |||||
Дык все полезно, что в рот полезло
если у тебя не будет колизий, т.е функция однозначно не примет такого значения то почему бы и нет вот пример который ты приводил NULL это значит ничего пустота а 0 конкретная цифра но поскольку указатель не может указывать на адрес 0, то и ввели
1
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||
08.03.2015, 00:42 | 13 | |||||
смотри и подумай
1
|
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,241
|
|
08.03.2015, 00:43 | 14 |
1
|
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
08.03.2015, 00:45 | 15 |
0
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
08.03.2015, 00:47 [ТС] | 16 |
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
08.03.2015, 00:49 | 18 |
_Valera_, потому что тип char хранится как целое число. Т.е. это - число. Любой символ - всего-лишь число. А то, что видно его как символ - это потому что объект cout умеет его так выводить.
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,704
|
|
08.03.2015, 00:52 | 19 |
а потому что коллизия
твое определение пустоты попадает в диапазон цикла ты должен выбрать такое число которое точно не будешь использовать например ты возвращаешь возраст, который точно не может быть отрицательным значит возвращая отрицательное число, сигнализируешь об ошибке
0
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
08.03.2015, 00:53 [ТС] | 20 |
0
|
08.03.2015, 00:53 | |
08.03.2015, 00:53 | |
Помогаю со студенческими работами здесь
20
Особенность де-сериализации или инициализации окна или я не знаю что :) Проверка на null Проверка на null Проверка на null Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |