Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
В справочнике Шилдта по языку C есть такой пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Зачем тут закоментированная строка? В книге она не закоментирована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 13:46 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NET, скорее всего опечатка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 13:56 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
у нас есть Код: plaintext 1. 2. 3. 4. 5. если первое условие выполнится произойдёт переход к проверке условия цикла,второе условие не выполнится. Если первое условие не выполнится, то и второе условие не выполнится, ибо А=А. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 14:00 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
прошу прощение, break вообще переводит выполнение программы из цикла. Впрочем смысл рассуждений выше не сильно меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 14:03 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
Я больше с этого поржал Код: plaintext 1. Зачем ему тут нужен двухмерный массив строк, если дальше в коде он все равно его использует как одномерный, для чего пришлось даже явное приведение типа делать ? :) Думаю, что Шилдта - в топку. Ничему хорошему он не научит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 14:09 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЯ больше с этого поржал Код: plaintext 1. Зачем ему тут нужен двухмерный массив строк, если дальше в коде он все равно его использует как одномерный, для чего пришлось даже явное приведение типа делать ? :) Думаю, что Шилдта - в топку. Ничему хорошему он не научит. тоже не понял зачем тут char*** ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 14:15 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
SashaMercuryAnatoly MoskovskyЯ больше с этого поржал Код: plaintext 1. Зачем ему тут нужен двухмерный массив строк, если дальше в коде он все равно его использует как одномерный, для чего пришлось даже явное приведение типа делать ? :) Думаю, что Шилдта - в топку. Ничему хорошему он не научит. тоже не понял зачем тут char*** Я тоже не понял. Можно было так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Количество символов в программе примерно тоже. ) Но без явного приведения. Возможно в его варианте меньше операций разадресации. Тут при каждой проверке p на ноль приходится дважды переходить по адресу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 15:33 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
Число 40 в этом алгоритме лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 15:46 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETКоличество символов в программе примерно тоже. ) Но без явного приведения. Возможно в его варианте меньше операций разадресации. Тут при каждой проверке p на ноль приходится дважды переходить по адресу. А, так dic можно просто объявить, как char *dic[40], а p как char **p. И не надо будет два раза переходить по адресу при проверке p на ноль. И приведение типов не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2014, 15:54 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
Вопрос не по C, а по C++, запощу сюда чтобы темы не плодить. Встретил в книге вот такой код. Код: plaintext 1. 2. 3. Причём тут sizeof(double) в последнем операторе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 13:34 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETПричём тут sizeof(double) в последнем операторе? Ну так num же double. Правильнее было бы, конечно, sizeof(num), но и так сойдёт. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 13:37 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЯ больше с этого поржал Код: plaintext 1. Зачем ему тут нужен двухмерный массив строк, если дальше в коде он все равно его использует как одномерный, для чего пришлось даже явное приведение типа делать ? :) Думаю, что Шилдта - в топку. Ничему хорошему он не научит. Да, у него дурная слава... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 14:38 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETВопрос не по C, а по C++, запощу сюда чтобы темы не плодить. Встретил в книге вот такой код. Код: plaintext 1. 2. 3. Причём тут sizeof(double) в последнем операторе? Это вывод байт, составляющих значение типа double. Функция out.write имеет два параметра: адрес бинарного буфера, и его размер, в батах. Вот этот размер в байтах sizeof и задаёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 14:41 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
Странный код. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Типа ассоциативный массив (т.е. map). Но на спичках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 14:48 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
MasterZiv.NETВопрос не по C, а по C++, запощу сюда чтобы темы не плодить. Встретил в книге вот такой код. Код: plaintext 1. 2. 3. Причём тут sizeof(double) в последнем операторе? Это вывод байт, составляющих значение типа double. Функция out.write имеет два параметра: адрес бинарного буфера, и его размер, в батах. Вот этот размер в байтах sizeof и задаёт. Определение функции как оно дано в той же книге. write(buf, n) - записывает в поток n символов из массива buf. Каким боком соотносятся число символов в строке "100.45" и sizeof(double), который вообще константа. Или тут так и задумано выводить всегда одно и то же число символов вне зависимости от того чему равно num 100.45 или 340000.67854? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 17:38 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETMasterZiv Это вывод байт, составляющих значение типа double. Функция out.write имеет два параметра: адрес бинарного буфера, и его размер, в батах. Вот этот размер в байтах sizeof и задаёт. Определение функции как оно дано в той же книге. write(buf, n) - записывает в поток n символов из массива buf. Каким боком соотносятся число символов в строке "100.45" и sizeof(double), который вообще константа. Или тут так и задумано выводить всегда одно и то же число символов вне зависимости от того чему равно num 100.45 или 340000.67854?обрати внимание на выделенное в цитате MasterZiv. вот это: Код: plaintext 1. не запишет в поток строку "100.45", оно запишет байты, из которых состоит число 100.45. Это - две большие разницы, от слова "вообще". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 18:06 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETОпределение функции как оно дано в той же книге. write(buf, n) - записывает в поток n символов из массива buf. Оно записывает не символы, а бинарные байты в поток . В данном случае объявление первого параметра char* вводит в заблуждение немного -- но в С++ байты и символы -- это одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 18:53 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
MasterZiv.NETОпределение функции как оно дано в той же книге. write(buf, n) - записывает в поток n символов из массива buf. Оно записывает не символы, а бинарные байты в поток . В данном случае объявление первого параметра char* вводит в заблуждение немного -- но в С++ байты и символы -- это одно и то же. Понял. Именно это меня и ввело в заблуждение. Почему интересно используется указатель на char, а не на void? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 19:42 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETMasterZivпропущено... Оно записывает не символы, а бинарные байты в поток . В данном случае объявление первого параметра char* вводит в заблуждение немного -- но в С++ байты и символы -- это одно и то же. Понял. Именно это меня и ввело в заблуждение. Почему интересно используется указатель на char, а не на void? char это как правило байт. если смотреть на write(char * b, int n) то можно догадаться и легко документировать, что функция запишет в файл массив char[n]. если взять гипотетическую функцию write___(void *b, int n), то как бы массив void[n] объявить невозможно - void не имеет размера. а итоге мы возвращается к (void*)char[n]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2015, 23:50 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
mcureenab.NETпропущено... Понял. Именно это меня и ввело в заблуждение. Почему интересно используется указатель на char, а не на void? char это как правило байт. если смотреть на write(char * b, int n) то можно догадаться и легко документировать, что функция запишет в файл массив char[n]. если взять гипотетическую функцию write___(void *b, int n), то как бы массив void[n] объявить невозможно - void не имеет размера. а итоге мы возвращается к (void*)char[n]. Да, а вообще странно, что в C нет типа byte. Казалось бы это тот самый элементарный кирпичик не зависящий от реализации, из которого всё должно строится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 15:50 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETвообще странно, что в C нет типа byte Есть int8_t/uint8_t. Эстеты могут использовать typedef unsigned char byte. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 15:55 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETДа, а вообще странно, что в C нет типа byte. Казалось бы это тот самый элементарный кирпичик не зависящий от реализации, из которого всё должно строится. Полагаю, "C" реализован не только на двоичных компьютерах, поэтому привязанность к байту (8bit) ограничит переносимость кода. А так, char это всего лишь абстрактный (в смысле не привязанный к аппаратным особенностям) тип с диапазоном целых значений не меньше чем -128 .. 127. На ЭВМ с экзотической архитектурой может быть больше, но не меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 16:09 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
mcureenabтип с диапазоном целых значений не меньше чем -128 .. 127. Это signed char. Несколько другой тип. Местами даже несовместимый с двумя остальными. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 16:30 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
mcureenab.NETДа, а вообще странно, что в C нет типа byte. Казалось бы это тот самый элементарный кирпичик не зависящий от реализации, из которого всё должно строится. Полагаю, "C" реализован не только на двоичных компьютерах, поэтому привязанность к байту (8bit) ограничит переносимость кода. А так, char это всего лишь абстрактный (в смысле не привязанный к аппаратным особенностям) тип с диапазоном целых значений не меньше чем -128 .. 127. На ЭВМ с экзотической архитектурой может быть больше, но не меньше.Ты все перепутал. На самом деле, байт это не 8 бит, а минимальный размер обрабатываемый процессором. Char это не абстрактный тип. K&R, 2.2 Data Types and Sizeschar a single byte, capable of holding one character in the local character setТак что char может быть и больше, и меньше восьми бит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:27 |
|
||
|
Простой вопрос по языку C
|
|||
|---|---|---|---|
|
#18+
.NETMasterZivпропущено... Оно записывает не символы, а бинарные байты в поток . В данном случае объявление первого параметра char* вводит в заблуждение немного -- но в С++ байты и символы -- это одно и то же. Понял. Именно это меня и ввело в заблуждение. Почему интересно используется указатель на char, а не на void? Потому что такое понятие ИТ, как "байт" в языке С++ выражается в виде типа char . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 19:32 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=41&tid=2018732]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 157ms |

| 0 / 0 |
