Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств. |
22.12.2007, 20:06
|
|
Временная регистрация
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
|
помогите разобраться
Хочу научиться писать на си ,купил книгу Ю.А.Шпак
"Программирование на языке си для avr и pic микроконтроллеров" и вот что-то сообразить не могу
приведение типов ;
int X
int Y=200
char C=30
X=(int)C*10+Y //переменная С приведена к типу int
результат выражения равен 3200,что это очепятка или
я что-то не понимаю , ведь 300+200=500
|
|
|
|
22.12.2007, 20:35
|
|
Временная регистрация
Регистрация: 18.10.2007
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Может и опечатка.
|
|
|
|
24.12.2007, 17:24
|
|
Прописка
Регистрация: 07.08.2005
Сообщений: 178
Сказал спасибо: 16
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Да наверное опечатка щас проверил в отладчике выдало 500
|
|
|
|
24.12.2007, 18:22
|
|
Гражданин KAZUS.RU
Регистрация: 27.07.2006
Сообщений: 659
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Проверьте какой длины у вас переменная инт,вероятно она 8бит.
|
|
|
|
24.12.2007, 18:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от EVGENIY1962
|
какой длины ... переменная инт,вероятно она 8бит.
|
А что, все 8-битные переменные хранят значение 3200? Или логика какая-то иная? Нельзя пояснить?
|
|
|
|
24.12.2007, 20:57
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
|
Сообщение от tempora
|
Сообщение от EVGENIY1962
|
какой длины ... переменная инт,вероятно она 8бит.
|
А что, все 8-битные переменные хранят значение 3200? Или логика какая-то иная? Нельзя пояснить?
|
В книге Шпак описывает CCS .
У CCS int может быть от 1 до 32 бит.
А char unsigned int8.
Насчет опечаток... их в книге полно.
|
|
|
|
24.12.2007, 21:13
|
|
Временная регистрация
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
|
В книге Шпак int целое число ,разряднось 16 бит
может принимать значение от -32768 до 32767,
32 битные значения могут принимать типы данных;float-
вещественное число ,
long int-длинное целое,unsigned long int-беззнаковое
длинное целое.Возможно в выражении x=(int)c*10+Y,число
10 это 100.
|
|
|
|
24.12.2007, 22:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Сообщение от ctefan
|
Возможно в выражении x=(int)c*10+Y,число
10 это 100.
|
О! Вот это предположение все объясняет. Согласен.
|
|
|
|
24.12.2007, 23:33
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
|
Сообщение от ctefan
|
В книге Шпак int целое число ,разряднось 16 бит
может принимать значение от -32768 до 32767,
32 битные значения могут принимать типы данных;float-
вещественное число ,
long int-длинное целое,unsigned long int-беззнаковое
длинное целое.Возможно в выражении x=(int)c*10+Y,число
10 это 100.
|
Для тебя специально..
-- Прилагается рисунок: --
|
|
|
|
24.12.2007, 23:55
|
|
Прописка
Регистрация: 16.01.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
|
а в msdn про float указано: 3.4E +/- 38 (7 digits)
Floating-point numbers use the IEEE (Institute of Electrical and Electronics Engineers) format. Single-precision values with float type have 4 bytes, consisting of a sign bit, an 8-bit excess-127 binary exponent, and a 23-bit mantissa. The mantissa represents a number between 1.0 and 2.0. Since the high-order bit of the mantissa is always 1, it is not stored in the number. This representation gives a range of approximately 3.4E–38 to 3.4E+38 for type float.
меньшее минимальное значение может храниться лишь в денормализованной форме, которая возможна лишь при наличии float-point регистров.
__________________
"I can wire anything directly into anything" Hubert J. Farnsworth
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:24.
|
|