Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Karchok
2 / 2 / 1
Регистрация: 27.09.2011
Сообщений: 48
#1

Оператор == - C++

25.06.2013, 17:03. Просмотров 534. Ответов 18
Метки нет (Все метки)

C++
1
2
3
char ch = 255;
    if(ch==255)
        cout<<"Hello!";
Почему условие выдаёт false? Понятно что ch в данном случае равно -1 из-за переполнения, но если сравнивать побитово то эти выражения равны! Почему так?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 17:03     Оператор ==
Посмотрите здесь:

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

оператор do while - C++
задание следующее: нужно найти произведение n чисел, но используя оператор do while. Я более-менее изучил его основы и элементарные...

Оператор If - C++
Всем доброго времени суток. Такой вопрос, мне нужно задать условие : baza.time &gt;= 30 и в тоже время baza.price &lt; 100000 чтобы...

оператор For - C++
Надо использовать оператор For в данной задаче..... Надо сделать программу каторый выводит имя например:alpamis 10 раз

Оператор if - C++
Почему у меня оператор Else выдает как ошибку(Е2054 Misplaced else)? и в операторе if не нравится как я записал if((s==a)&amp;&amp;(f==p)); ? ...

оператор this - C++
Прочитал раздел и с книги Стратуструпа о операторе this. но не фига не понял где его использовать его применение

оператор if - C++
если А = 5 , то пишется if(A == 5) а если А от 5 до 7 включительно, как записать ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.06.2013, 17:04     Оператор == #2
char хранит числа от -128 до 127 и == не оператор, а операция
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 193
25.06.2013, 17:05     Оператор == #3
char ch = "255";
if(ch=="255")
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 17:07     Оператор == #4
C++
1
2
3
unsigned char ch = 255;
      if(ch == 255)
        cout<<"Hello!";
coloc
погромист
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
25.06.2013, 17:07     Оператор == #5
Цитата Сообщение от FireProoF Посмотреть сообщение
char ch = "255";
if(ch=="255")
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.06.2013, 17:08     Оператор == #6
Цитата Сообщение от Thinker Посмотреть сообщение
char хранит числа от -128 до 127
Зависит от реализации. Может быть и 0..255.
Цитата Сообщение от Thinker Посмотреть сообщение
== не оператор, а операция
а как же перегрузка оператора?
C++
1
operator==
Karchok
2 / 2 / 1
Регистрация: 27.09.2011
Сообщений: 48
25.06.2013, 17:09  [ТС]     Оператор == #7
И что теперь? побитово если сравнивать, то одно и то же получается!
http://msdn.microsoft.com/ru-ru/library/x04xhy0h.aspx
открой ссылочку на все операторы с++
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.06.2013, 17:10     Оператор == #8
Цитата Сообщение от Tulosba Посмотреть сообщение
C++
1
operator==
и все же это операция сравнения. перегрузка, хм... не знаю почему
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.06.2013, 17:13     Оператор == #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
@coloc, с двойными компилятор ругнется. Намного интереснее будет с одинарными кавычками:
C++
1
char c = '255';
Добавлено через 2 минуты
@Thinker, с вики:
Английское слово operator, соответствующее термину «операция», иногда ошибочно переводят как «оператор». На самом деле (по историческим причинам) русский термин «оператор» обозначает то же, что и «инструкция», которой соответствует английское statement[1]. Путаница усугубилась тем, что в C присваивание и инкремент/декремент являются и операторами, и операциями.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 17:17     Оператор == #10
Цитата Сообщение от Karchok Посмотреть сообщение
побитово если сравнивать, то одно и то же получается!
char знаковый, поэтому единица старшего разряда трактуется как знак числа.
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
25.06.2013, 17:19     Оператор == #11
есть предположение что в ch у тебя -1, потому что тип char он знаковый, а ты сравниваешь с 255, как ты понимаешь побитово они могут быть и равны, а вот значения разные.

unsigned должен решить твою проблему
Karchok
2 / 2 / 1
Регистрация: 27.09.2011
Сообщений: 48
25.06.2013, 17:22  [ТС]     Оператор == #12
А вообще как идёт сравнение? Оба выражения, слева и справа, преобразовываются в int или как? Понятно что char знаковый, но выражение справа можно тоже интерпретировать как знаковое и тогда будет -1. Вообще все целочисленные константы какой тип имеют по умолчанию?

Добавлено через 1 минуту
Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
unsigned должен решить твою проблему
Это да
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 17:28     Оператор == #13
Цитата Сообщение от Karchok Посмотреть сообщение
но выражение справа можно тоже интерпретировать как знаковое
С какой стати? 255 - это целое положительное, и никак иначе.
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,013
Записей в блоге: 1
25.06.2013, 17:29     Оператор == #14
C++
1
2
3
char ch = 255;
    if((unsigned char)ch==255)  cout<<"Hello!"; // так сработает
    if(ch==(char)255)  cout<<"Hello!"; // и так сработает
В выражении ch==255 оба значения приводятся к целому (ch к -1, а 255 остается 255)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 17:31     Оператор ==
Еще ссылки по теме:

Оператор for - C++
Всем здравствуйте. Изучаю оператор for, и совершенно не могу понять, как он будет работать в этой программе: Найти сумму целых...

Оператор new - C++
Приветствую. Есть такой вопрос. Почему одни программисты используют оператор new, а другие нет? Ведь если создавать объект этими...

оператор - C++
Возврат результата из функции в вызывающую её функцию осуществляется с помощью оператора…

оператор for c++ - C++
вывести все целые числа из диапазона от А до В (А&lt;=B), оканчивающиеся на X или Y условие понятно какое но выводит все числа из диапазона,...

Оператор while - C++
Доброго времени суток всем! Только-только начал изучать плюсы и возникла проблема при выполнении задания. Задание: написать программу...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.06.2013, 17:31     Оператор == #15
Цитата Сообщение от Karchok Посмотреть сообщение
Вообще все целочисленные константы какой тип имеют по умолчанию?
int.
Yandex
Объявления
25.06.2013, 17:31     Оператор ==
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru