Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2009, 13:22   #11
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

8D = 141 а это код символа Ќ
Проблема была в том, что в типе char он имел код FFFFFF8D (и это правильно), в десятиричной системе копилятор его переводил как -115.

char 1-байтовое целое, используемое для хранения символа От -128 до 127 ИЛИ от 0 до 255

unsigned char 1-байтовое беззнаковое целое От 0 до 255
lennon вне форума Ответить с цитированием
Старый 30.07.2009, 13:29   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так у автора проблема была не при чтении сомволов а при выполнении
val= bufer[0]*256+bufer[1] ;
Цитата:
char 1-байтовое целое, используемое для хранения символа От -128 до 127
Что же это за компилятор который не знает как интерпретировать байт. Вот что вычитал:
Цитата:
A char can be signed, unsigned, or unspecified. By default, signed char is assumed.
Что за глупость? Почему по умолчанке именно так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2009, 13:32   #13
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что за глупость? Почему по умолчанке именно так?
Наверное потому что разработчики компиляторов заранее не знают что нужно программистам...
psycho-coder вне форума Ответить с цитированием
Старый 30.07.2009, 13:33   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ладно. Прекращаю не по теме... Будем считать что проблема решена
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2009, 13:37   #15
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

Такое умолчание установлено в зависимости от используемого компилятора. Чтобы определить, каковы переменные char для данного компилятора, достаточно запустить тестовую программу.

Код:
#include <iostream>
using namespace std;
int main() {
char ch = 255;
int i;
i = ch;
cout << i << endl; // для компилятора VC++ i=-1
}
вот в биледере по умолчанию unsigned
lennon вне форума Ответить с цитированием
Старый 30.07.2009, 13:38   #16
ongleb
Пользователь
 
Регистрация: 30.07.2009
Сообщений: 10
По умолчанию

С++ Builder 6
ongleb вне форума Ответить с цитированием
Старый 30.07.2009, 13:39   #17
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Для Builder 6 тоже -1
psycho-coder вне форума Ответить с цитированием
Старый 30.07.2009, 13:48   #18
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Всё, что без указания unsigned, по-умолчанию signed(int, char, long, etc...)(по-крайней мере в VS)
Для signed типов, при расширении до более вместительного типа происходит расширение по знаковому биту. bufer[1] содержал 141, битовый знак выставлен, потому при перемещении в 4-байтовую переменную три верхних байта заполнились единицами. Для unsigned верхние байты заполняются нулями

Последний раз редактировалось netrino; 30.07.2009 в 13:51.
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при открытии файла Ciberal Общие вопросы Delphi 2 09.06.2009 22:58
ошибка при чтении файла Alik-Soldier Общие вопросы C/C++ 1 31.05.2009 20:44
Проблема при чтении из файла Satorin Общие вопросы Delphi 2 17.12.2008 11:32
Ошибка при чтении БД из файла!! sting БД в Delphi 4 14.12.2008 22:23
C++: ошибка при открытии файла Retiz Помощь студентам 2 30.08.2008 22:12