3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|||||||||||
1 | |||||||||||
Что делает оператор ! в выражении инструкции?28.07.2012, 23:28. Показов 4608. Ответов 21
Метки нет (Все метки)
Меня что то запутали, к примеру :
Но мне говорят, что этот оператор не изменяет значения операнда, а заставляет вывести тело инструкции даже если проверка дала ложь и наоборот если истину, то не вывести. Проблема в том, что я не могу придумать как это проверить, а информации по этому поводу тоже не нашел. Вот к примеру ещё этот код :
Какой вариант правильный и почему?
0
|
28.07.2012, 23:28 | |
Ответы с готовыми решениями:
21
Обьясните пожайлуста как и что делает данный оператор в этом выражении fState [x][y] ^= 1;. Неполный код привожу ниже. Что такое блоки и инструкции, вложенные инструкции и главные инструкции? Что за оператор такой string replace и что он делает? Что делает оператор ~~ |
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
|
|
28.07.2012, 23:39 | 3 |
Оператор "!" - логическое отрицание.
!true = false; !false = true; тк в сях true - это любое число != 0, а false - просто ноль, то !3 == 0; !7 == 0; По умолчанию - true == 1; посему !0 == 1;
1
|
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
|
|
28.07.2012, 23:43 | 5 |
Здесь именно вычисляется выражение !n, при этом происходит преобразование типа int в тип bool (условия - выше), производится логическое отрицание и обратное преобразование. Результат - число.
1
|
Заблокирован
|
|
28.07.2012, 23:44 | 6 |
0
|
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
|
|||||||||||
28.07.2012, 23:44 | 7 | ||||||||||
Читайте внимательнее.
true - это константа - одно число. Однако за true так же принимается любое ненулевое число. Соотвественно
0
|
28.07.2012, 23:50 | 8 |
я - не любитель играть в побочные эффекты.
int n=3, n2=0; if(!n != n2) cout << "\n"; какие типы будут сравниваться? bool <-> int ? int <-> int ? наверняка каждый компилятор делает как хочет. или где-то в недрах стандарта это определено, но ставлю на то, что нельзя определить каждый пук. мне о таких вещах думать - такой облом! все равно как выяснять, что будет лучше: если молотком ударить по ногтю указательного пальца, или большого? я - за то, чтобы вообще не стучать по ногтям, а куда надо (разве что именно по ногтям и надо).
0
|
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
|
|
28.07.2012, 23:53 | 9 |
Что за бред?! Зачем стучать по ногтям?!
Аналогично: Зачем писать такой бред?! Объясняю: Сначала - переменная n воспринимается как булева, берется ее отрицание, получаем false. Далее она преобразуется в int, получаем ноль. Ноль - не равен нулю - неверно.
1
|
Заблокирован
|
|
28.07.2012, 23:55 | 10 |
Почитай о приоритетах операций. Об этом пишут в любой книге включая "C++ для чайников".
Вот, например, работая дворником, вообще думать не нужно. Подумай об этом.
0
|
Заблокирован
|
||||||
29.07.2012, 02:14 | 11 | |||||
нет. При сравнении меньший тип преобразуется в больший.
0
|
3 / 3 / 0
Регистрация: 13.06.2012
Сообщений: 28
|
|
29.07.2012, 02:32 [ТС] | 12 |
Уже понял, ну я студент, а причем здесь дискретная математика? Просто я вышку в основном пропускал, потом собираюсь нагонять для себя.
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
29.07.2012, 02:41 | 13 |
наврятли каждый компилятор делает это по-разному, но все же
если n все же 0, то смысл сравнения !n != n2 достаточно неведом (так как !n будет некое ненулевое значение) например его значение может совпасть с n2
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
29.07.2012, 03:11 | 15 |
0
|
29.07.2012, 07:31 | 18 |
Запись "!n" эквивалентна записи "func(n)", где func определено как:
C int func (<type> n) { if (n == 0) return 1; else return 0; }
2
|
5 / 5 / 1
Регистрация: 10.01.2012
Сообщений: 19
|
||||||
29.07.2012, 09:05 | 19 | |||||
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
29.07.2012, 13:28 | 20 |
да, действительно в стандарте нашел
0
|
29.07.2012, 13:28 | |
29.07.2012, 13:28 | |
Помогаю со студенческими работами здесь
20
Что делает оператор >> в C++? что делает оператор? Что делает оператор => ? Что делает оператор //= Что делает оператор Inc? Какой оператор что делает? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |