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

Присваивание... - C++

Восстановить пароль Регистрация
 
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
08.10.2009, 02:12     Присваивание... #1
C++
1
2
3
char f = 300;
cout << f;
system("PAUSE");
C++
1
2
3
4
char f = 300;
int s = f;
cout << f;
system("PAUSE");
Почему вывод значений отличается ? Ведь я же передавал одно и то же значение между переменными.И вообще,как в символьную переменную можно засунуть 300.

И ещё - почему при передаче в первом примере значения 999999 выдаётся символ "?" ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
08.10.2009, 02:14     Присваивание... #2
Welemir, про размерности почитай, чтобы знал, какой максимум у char и т д.
Цитата Сообщение от Welemir Посмотреть сообщение
Почему вывод значений отличается ?
потому что int обычно четыре байта, а char - один.
Gravity
 Аватар для Gravity
556 / 550 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.10.2009, 02:23     Присваивание... #3
Цитата Сообщение от Welemir Посмотреть сообщение
И вообще,как в символьную переменную можно засунуть 300.
Вот и компилятор не понимает, как такое возможно... У char диапазон значений -128...127, а ты втюхиваешь 300, ну значение переменной и обрубается.
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
08.10.2009, 02:47  [ТС]     Присваивание... #4
Я знаю,я просто проверял.Меня интересует,что за ? выводится. Про диапазоны я наизусть знаю...

Добавлено через 5 минут
И ещё вопрос,после чего иду спать(( - int(*s) n[50] - почему это указатель на массив, а не массив указателей ? Ведь у [] приоритет выше,чем у *.
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
08.10.2009, 02:59     Присваивание... #5
Цитата Сообщение от Welemir Посмотреть сообщение
Про диапазоны я наизусть знаю...
Знал бы, сам бы давно посчитал.
999999 это 0x000f423f в шестандцатеричной системе. Как видно, оно нифига не поместится в char (один байт). Поэтому возьмется младший байт из int - 3f, а 3f - код символа ?

P. S. наизусть он знает...

Добавлено через 5 минут
Цитата Сообщение от Welemir Посмотреть сообщение
int(*s) n[50]
что это? Это разве скомпилится?
Sich_Taras
14 / 14 / 1
Регистрация: 08.10.2009
Сообщений: 114
08.10.2009, 03:14     Присваивание... #6
крутой бред ))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2009, 04:05     Присваивание...
Еще ссылки по теме:

C++ Присваивание значения переменной
Почему работает присваивание C++
C++ Присваивание при полиморфизме
C++ Присваивание
Присваивание литерала указателю C++

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

Или воспользуйтесь поиском по форуму:
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
08.10.2009, 04:05     Присваивание... #7
мдя... вот так и рождаются шедевры...
что курил?
Yandex
Объявления
08.10.2009, 04:05     Присваивание...
Ответ Создать тему
Опции темы

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