Расскажите, пожалуйста, о внутреннем представлении различных типов данных в C/C++ и о преобразовании типов, и как при преобразовании происходит изменение внутреннего представления данных.
Добрый день, Анатолий! Вообще говоря, преобразованием типов данных занимается компилятор. И к языку С это в принципе не имеет прямого отношения. Вот пример (int)100000.2 даст различный вариант для компилятора, у которого тип int в 2 байта и для того, у которого 4 байта. Хотя нормальный компилятор должен выдавать предупреждения по поводу возможной потери значения при преобразовании. Что есть внутреннее представление данных. наверное это тебе тоже не стоит знать пока, по крайней мере пока сам не захочешь разобраться, а в рамках ответа в рассылке я не смог бы ответить. Ведь если писать в стандарте С или С++, то можно абстрагироваться от платформы(они в принципе для этого и были созданы) хотя бы там, где можно обойтись без расширений языка. В принципе внутреннее представление типов данных- это просто набор байтов, только в одной системе он может быть одним, а вдругой
другим. И например тип int, пересланный по тому же протоколу TCP/IP, из одной системы у
же может не содержать то же самое значение для другой системы. Поэтому например в той же UNIX все конфигурации заданы строковыми значениями. Ответ отправлен: 23.08.2004, 03:17 Отправитель: DiGiT
Вопрос № 1850
Народ, я понимаю что глупый вопрос, но в чем разница между: main() и int main() и зачем иногда пишут: int main(int argc, char *argv[]) В чем фишка?
Доброе время суток, jeka! последний вариант пишут, когда хотят получить от операционки команднуй строку (аргументы). Ответ отправлен: 24.08.2004, 11:52 Отправитель: SackTap Отвечает DiGiT
Доброе время суток, jeka! main() то же самое, что и void main(). А что компиляторы до сих пор не ругаются на эту ересь ? В стандарте написано черным по белому ФУНКЦИЯ main() ДОЛЖНА ВОЗВРАЩАТЬ ЗНАЧЕНИЕ ТИПА INT. Поэтому единственно верный вариант - это int main(). (И просьба хватит читать стандарт языка от Кернигана и Ритчи, он уже далеко не тот что и 40 лет назад) Второе если не используешь параметры (int argc, char *argv[]) их можному опускать. первый из них содержит количество параметров, переданных в функцию, а второе указатель на массив указателей на параметры, переданные в фунцию main(простите за такое нагруженное предложение, но в си именно так). То есть если argc содержит 2 то argv[0] - указатель на первый параметр, переданый в функцию, argv[1] - указательна на второй параметр, переданный в функцию. ЗЫ Читайте книги, в них содержатся знания и
достижения умнейших людей в ИТ(которые к сожалению в основном жители USA) <
/b>
Ответ отправлен: 23.08.2004, 03:26 Отправитель: DiGiT Отвечает vitya
Приветствую Вас, jeka! по стандарту языка С и С++ единственное верное определение является int main() или int main(int argc, char ** argv) во втором случае программе передаются параметры коммандной строки. В старом С запись main() {} работала, так как в старом С все функции без возв. типа определялись, как int f(), теперь этого нет. Ответ отправлен: 23.08.2004, 08:46 Отправитель: vitya
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.