Ви не увійшли.
Приветствую,
из за чего такое может быть, декларирую переменую unixZeitOnline как long для временни юникс, а считает програма ее как интеджер т.е правильно до 32767. в тоже же время друга переменная unixZeit тоже как long работает правильно.
мне нужно посчитать из нормального времени , секунды от начало суток.
Неактивний
Для С это нормально, читайте стандарты. Пишите 3600L, 60L и все заработает.
Неактивний
Для С это нормально, читайте стандарты. Пишите 3600L, 60L и все заработает.
Более того, это не вопросы конкретно C, а многих языков со статической типизацией: если вы в промежуточных операциях (stundenOnlain * 3600 и т.д.) используете операнды типа byte, то и результат будет того же типа, и усекается до byte, или до int как минимальной единицы хранения целочисленных значений, в зависимости от архитектуры.
Резюме: не экономьте без нужды на размерах типов данных объявляемых переменных.
Неактивний
Вячеслав Азаров пише:Для С это нормально, читайте стандарты. Пишите 3600L, 60L и все заработает.
Более того, это не вопросы конкретно C, а многих языков со статической типизацией: если вы в промежуточных операциях (stundenOnlain * 3600 и т.д.) используете операнды типа byte, то и результат будет того же типа, и усекается до byte, или до int как минимальной единицы хранения целочисленных значений, в зависимости от архитектуры.
Резюме: не экономьте без нужды на размерах типов данных объявляемых переменных.
спасибо, буду знать.
Неактивний
спасибо, буду знать.
В С, результат арифметических вычислений приводится к самому длинному типу из правой стороны выражениия. Тип переменной в левой сторне, почему-то, не учитывается. Однако при попытке присвоить короткой переменной длинную, генерируется сообщение об ошибке или предупреждение. Странно, но так есть, и это стандарт. Это свойственно только С, например Паскаль делает вывод типов правильно.
Неактивний
если вы в промежуточных операциях (stundenOnlain * 3600 и т.д.) используете операнды типа byte, то и результат будет того же типа, и усекается до byte, или до int как минимальной единицы хранения целочисленных значений, в зависимости от архитектуры.
Т.е. если в операции сложения участвуют две переменные: одна long, а другая int - результат будет int? Это не бред?
Неактивний
Olej пише:если вы в промежуточных операциях (stundenOnlain * 3600 и т.д.) используете операнды типа byte, то и результат будет того же типа, и усекается до byte, или до int как минимальной единицы хранения целочисленных значений, в зависимости от архитектуры.
Т.е. если в операции сложения участвуют две переменные: одна long, а другая int - результат будет int? Это не бред?
Ты в операции: stundenOnlain * 3600 - где-то видишь и long и int?
Разуй глаза, придурок.
Анжэла, ви носите очки!
Подумают шо умная...
Неактивний
Olej, тебе задали вопрос и попросили на него ответить. Ответ опровергает бред, который ты нёс. Похоже, это дошло даже до такого неуча. как ты. Отсюда хамство. Я правильно понял ситуацию?
Неактивний
тоже заметил что есть тут контенгент , который непонятно что с себя корчит потому что програмисты , отвечять не нужно это не вопрос
есть тут контенгент
возьми "Букварь"
Надпись над писуаром в общественном туалете:
- Мужчина, не льстите себе - подойдите ближе.
Остання редакція Olej (2018-06-12 22:28:08)
Неактивний