Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Alexandr_LN
1 / 1 / 0
Регистрация: 28.04.2009
Сообщений: 116
1

Комбинирование символов!

20.08.2010, 12:27. Просмотров 525. Ответов 8
Метки нет (Все метки)

Подскажите пожалуйста каким образом выполняется следующее действие.
Вот отрывок кода:

C
1
2
3
4
unsigned char a='C';
int b=255;
 
a=a^((unsigned char)b);
Заранее благодарен!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2010, 12:27
Ответы с готовыми решениями:

Комбинирование числового и символьного вводов
Вопрос по учебнику Си Стивена Прата. "Числовой ввод пропускает символы пробела и новой строки, а...

При смещении символов в строке выдается результат в виде кривых символов
У меня такая проблема: дело в том что я циклом смещаю символы в строке вот таким образом,...

В строке символов найти максимальную подпоследовательность символов, являющуюся палиндромом
Народ, помогите пожалуйста. Нужно написать программу, используя динамический массив. Вот условие...

Дана строка символов, вывести последовательности символов, заключенные в скобки
(Помогите,пожалуйста) Дана строка символов. Признак конца-символ '\n'(перевод строки). Необходимо...

Ввести строку символов, посчитать количество символов, не являющихся буквами английского алфавита
Ввести строку символов, если ее длина >6, то посчитать количество символов, не являющихся буквами...

8
iama
1329 / 980 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
20.08.2010, 12:34 2
char - целочисленный тип величиной в 1 байт. при логических операциях он представляет собой не символ, а число, с которым и выполняются логические операции, тут, к примеру, выполняется 67 XOR 255, можете посчитать на калькуляторе, сколько это будет и сверить с результатом программы.
1
Alexandr_LN
1 / 1 / 0
Регистрация: 28.04.2009
Сообщений: 116
20.08.2010, 12:45  [ТС] 3
дааа я так и сделал... Но! есть пару моментов когда не совпадает, поэтому и решил уточнить как этот оператор работает.

вот например:
если char a='\'
a int b=254;
то по идее должно получиться число(по калькулятору) равное 207, а получается равное 209?!? И таких примеров есть еще парочка!

Вот мне и интересно как это все таки происходит?!
Спасибо!
0
iama
1329 / 980 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
20.08.2010, 12:51 4
Alexandr_LN, это напрямую зависит от компилятора и стандартной кодировки. Как известно, в разных кодировках, коды разных символов могут варьироватся. Ваше расхождение наверняка вызвано чем-то подобным. В дебаг окне можете сверить, какое число лежит в а перед логической операцией.
1
Nameless One
Эксперт С++
5790 / 3439 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
20.08.2010, 12:51 5
b - максимальное значение для unsigned сhar, имеющего размер 1 байт (8 разрядов, или 11111111). При операции ^ (xor) биты числа a, равные единице, становятся равны 0 и наоборот. По сути, это запись операции отрицания ~. Т.е. этот код можно было заменить следующим:
C
1
2
char a = 'C';
a = ~a;
Зачем так сделали - непонятно
1
Alexandr_LN
1 / 1 / 0
Регистрация: 28.04.2009
Сообщений: 116
20.08.2010, 12:55  [ТС] 6
Да меня больше всего добивает, что некоторые, только несколько вариантов не совпадает с ожидаемым результатом! а все остальные нормально! Вот это и есть вопрос?!
Всем спасибо!
0
Nameless One
Эксперт С++
5790 / 3439 / 356
Регистрация: 08.02.2010
Сообщений: 7,448
20.08.2010, 12:58 7
Цитата Сообщение от iama Посмотреть сообщение
Alexandr_LN, это напрямую зависит от компилятора
О_о Как оно может зависеть от компилятора? Хочешь сказать, что у разных компиляторов результаты битовых операций - разные?
1
iama
1329 / 980 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
20.08.2010, 13:00 8
Цитата Сообщение от Nameless One Посмотреть сообщение
О_о Как оно может зависеть от компилятора? Хочешь сказать, что у разных компиляторов результаты битовых операций - разные?
например, C++Builder 1 имеет стандартную кодировку анси, а 2010 - юникод, вот и коды разные.
1
fasked
Эксперт С++
4997 / 2576 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
20.08.2010, 13:49 9
Цитата Сообщение от Nameless One Посмотреть сообщение
Хочешь сказать, что у разных компиляторов результаты битовых операций - разные?
Речь о таблицах символов, на современных машинах об этом можно не беспокоится, а вот на старых проблемы могли бы быть. Кажется K&R именно поэтому советовали пользоваться именно символами, а не их числовым представлением. То есть писать '0', а не 0x30.
1
20.08.2010, 13:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2010, 13:49

Прокомментируйте кусок кода программы подсчета цифр, символов-разделителей и прочих символов
Здравствуйте. Рабочая программа, нашел в учебнике Кернигана и Ритча. Не могу понять запись вида...

Функция пропускает первые n символов из строки str и формирует из оставшихся символов строку result
2. Написать функцию обработки строк: в качестве аргументов передаются в том числе строки, где конец...

Подсчет цифр, символов-разделителей и прочих символов в строке
#include <stdio.h> #include <locale.h> /* подсчет цифр, символов-разделителей и прочих...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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