powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
25 сообщений из 262, страница 7 из 11
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38737964
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДумаешь еще существуют? Разрабатывали аналоговые процы (если так можно назвать) в период рассвета СССР, в 50-60е, насколько историю знаю - тогда и забросили.
Сразу вспомнил: электромеханический аналоговый счетно-решающий прибор для расчета упреждения цели на Шилках ЗСУ-23-4М. Легко переносится четырьмя членами экипажа
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38738076
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TWhite OwlТы не прав. Существуют процессоры основанные на не двоичных системах счисления. В них один бит (один физический провод) может содержать ток разного номинала, каждый номинал соответствует разному числу внутри системы счисления.
Думаешь еще существуют? Разрабатывали аналоговые процы (если так можно назвать) в период рассвета СССР, в 50-60е, насколько историю знаю - тогда и забросили. Тогда же были разработки компов с троичной логикой (один вроде даже не сдан на драгметаллы), но потом занялись пародированием разработок IBM и все стало окончательно двоичным. Поправь если ошибаюсь.
Я не думаю что они существуют, я знаю что они существуют. Но из лабораторий пока не выходят...
Из коммерчески успешных проектов не знаю ни одного. Но то что их нету сейчас, не значит что их не будет никогда.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38738099
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"И тут Остапа понесло" :D Ну ясно, я как чувствовал, что вы спорить все начнёте, а ответа я не получу ;) Ладно. В любом случае узнал что-то новое, это хорошо. Всем спасибо :)
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38744903
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Сегодня мне нужно было считать несколько значений по маске. Сначала я хотел нарисовать для этого блоксхему, а потому подумал, что с большой долей вероятности, для этого можно использовать функцию из стандартной библиотеки ввода вывода stdio.h
Код: plaintext
1.
int fscanf(FILE * restrict stream, const char * restrict format, ...);


Я думаю, что она вам всем знакома. Ранее я ей пользовался, но не углублялся в детали её работы. Решил её изучить, и для этого конечно открыл стандарт. У меня возникло несколько вопросов, подскажите пожалуйста.

1.
©ISO/IEC ISO/IEC 9899:201x 7.21.6.2 21. The fscanf function reads input from the stream pointed to by stream, under control
of the string pointed to by format that specifies the admissible input sequences and how
they are to be converted for assignment, using subsequent arguments as pointers to the
objects to receive the converted input. If there are insufficient arguments for the format,
the behavior is undefined. If the format is exhausted while arguments remain, the excess
arguments are evaluated (as always) but are otherwise ignored.

Не очень понял перевод того, что выделил красным. Я понял так: "Если строка формата полностью просмотрена, но не все аргументы функции проинициализированы(ей), оставшиеся аргументы вычисляются, но игнорируются" Концовка моего перевода мне непонятна.

2.©ISO/IEC ISO/IEC 9899:201xThe format shall be a multibyte character sequence, beginning and ending in its initial
shift state.

Что такое shift state ?

3.ISO/IEC 9899:201xA directive composed of white-space character(s) is executed by reading input up to the
first non-white-space character (which remains unread), or until no more characters can
be read. The directive nev er fails.

То есть пробелы в массиве const char* restrict format не играют никакой роли(только если они не стоят после %) ?

4. ISO/IEC 9899:201xAn input item is read from the stream, unless the specification includes an n specifier

Как только встретит %n произойдёт переход к началу следующей строки, и считывание будет идти с неё?

5.
ISO/IEC 9899:201xThe length modifiers and their meanings are:
hh Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to signed char or unsigned char.
h Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to short int or unsigned short
int.
l (ell) Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to long int or unsigned long
int; that a following a, A, e, E, f, F, g, or G conversion specifier applies to
an argument with type pointer to double; or that a following c, s, or [
conversion specifier applies to an argument with type pointer to wchar_t.
ll (ell-ell) Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to long long int or unsigned
long long int.

Это про что? Не понял. Сначала подумал что дело идёт о максимальной длине считывания, но не уверен.

6. Вот такой пример input = "2++3=5"
Так считываю:
Код: plaintext
1.
int n = fscanf(in, "%d %c %d %c %d", &x1, &op1, &x2, &op2, &x3);


все ок.(хотя я не хочу чтобы тут было все ок)
А вот так input = "2++3==5", считывание не происходит корректно(хотя n=4,а не 2 как нужно).
Почему так ?

7. Пользуетесь ли вы в своей работе этой функцией ?
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38744906
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощение, весь код, с типами данных
Код: plaintext
1.
2.
3.
4.
int x1, x2, x3;
	char op1, op2;
	int n = fscanf(in, "%d %c %d %c %d", &x1, &op1, &x2, &op2, &x3);
	printf("%i %c %i %c %i\n %d\n", x1, op1, x2, op2, x3, n);
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38745006
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryРешил её изучить, и для этого конечно открыл стандарт.для изучения функций стандартной библиотеки полезней читать хэлп к используемому компилятору, а не стандарт. Потому что разработчики компилятора могут от стандарта отойти по каким либо причинам.
Стандарт говорит о том, как должно быть, хэлп говорит как есть на самом деле. К сожалению, это не всегда одно и то же
SashaMercuryПользуетесь ли вы в своей работе этой функцией ?нет. Слишком уж она требовательна к качеству входящих данных ( замечание относится ко всему семейству scanf, естественно ).
Но и на С я не пишу, а в плюсах нет необходимости использовать функции из <cstdio> ))
PS прошу прощения за оффтоп
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38745218
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury1.
©ISO/IEC ISO/IEC 9899:201x 7.21.6.2 21. The fscanf function reads input from the stream pointed to by stream, under control
of the string pointed to by format that specifies the admissible input sequences and how
they are to be converted for assignment, using subsequent arguments as pointers to the
objects to receive the converted input. If there are insufficient arguments for the format,
the behavior is undefined. If the format is exhausted while arguments remain, the excess
arguments are evaluated (as always) but are otherwise ignored.

Не очень понял перевод того, что выделил красным. Я понял так: "Если строка формата полностью просмотрена, но не все аргументы функции проинициализированы(ей), оставшиеся аргументы вычисляются, но игнорируются" Концовка моего перевода мне непонятна.

while arguments remain - переводится "пока остаются [необработанные] аргументы".

SashaMercury2.©ISO/IEC ISO/IEC 9899:201xThe format shall be a multibyte character sequence, beginning and ending in its initial
shift state.

Что такое shift state ?
Это про кодировки строк.
Если символы могут занимать несколько байтов, так что интерпретация следующего байта зависит от предыдущих, то нельзя передавать в функцию часть строки вырванную из контекста.
Например utf-8 - такая кодировка.

SashaMercury3.ISO/IEC 9899:201xA directive composed of white-space character(s) is executed by reading input up to the
first non-white-space character (which remains unread), or until no more characters can
be read. The directive nev er fails.

То есть пробелы в массиве const char* restrict format не играют никакой роли(только если они не стоят после %) ?

Нет. См. выделенное.

SashaMercury4. ISO/IEC 9899:201xAn input item is read from the stream, unless the specification includes an n specifier

Как только встретит %n произойдёт переход к началу следующей строки, и считывание будет идти с неё?
Читайте доку по scanf, n - в формате имеет совршенно другой смысл - задает длину в одном из аргументов.
SashaMercury5.
ISO/IEC 9899:201xThe length modifiers and their meanings are:
hh Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to signed char or unsigned char.
h Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to short int or unsigned short
int.
l (ell) Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to long int or unsigned long
int; that a following a, A, e, E, f, F, g, or G conversion specifier applies to
an argument with type pointer to double; or that a following c, s, or [
conversion specifier applies to an argument with type pointer to wchar_t.
ll (ell-ell) Specifies that a following d, i, o, u, x, X, or n conversion specifier applies
to an argument with type pointer to long long int or unsigned
long long int.

Это про что? Не понял. Сначала подумал что дело идёт о максимальной длине считывания, но не уверен.
Здесь указывается тип данных куда складывается результат. short, int, long - имеют разные физические размеры.

SashaMercury6. Вот такой пример input = "2++3=5"
Так считываю:
Код: plaintext
1.
int n = fscanf(in, "%d %c %d %c %d", &x1, &op1, &x2, &op2, &x3);



все ок.(хотя я не хочу чтобы тут было все ок)
А вот так input = "2++3==5", считывание не происходит корректно(хотя n=4,а не 2 как нужно).
Почему так ?
%d читает число со знаком, а %c читает ровно один символ - поэтому все правильно.
SashaMercury7. Пользуетесь ли вы в своей работе этой функцией ?
Да.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38745263
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,
1. Почему-то подумал что while в том контексте читается как but.

По остальным вопросам разберусь на свежую голову. Ещё раз перечитаю и разберу.

Всем спасибо.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38745307
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury1. Почему-то подумал что while в том контексте читается как but.
Можно подумать это меняет смысл предложения :)
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38745961
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C праздником вас, Сообщество :)
Желаю всем здоровья. Также, надеюсь вы будете читать код, такой-же прекрасный, как "Идиот" Достоевского, интересных решений и идей в творчестве.
Софья Васильевна КовалевскаяСтоит мне только коснуться математики, как я опять забуду всё на свете.
PS Отмечу, что я не стал бы выделять настоящих программистов от математиков. Настоящие программисты несомненно тоже математики.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38746052
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryPS Отмечу, что я не стал бы выделять настоящих программистов от математиков.
Программирование это больше логика чем математика, я бы даже сказал что математики мало в программировании. Говорят из философов хорошие программисты получаются.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38746158
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryНастоящие программисты несомненно тоже математики.
С точки зрения математики мой текущий проект был закончен в июне.
А с точки зрения программирования я до сих пор отлаживаю его.
Так что позвольте не согласиться :)
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783573
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Сегодня читал стандарт, и встретил следующее

©ISO/IEC ISO/IEC 9899:201x 6.4.2.2 Predefined identifiers6.4.2.2 Predefined identifiers
Semantics
1 The identifier _ _func_ _ shall be implicitly declared by the translator as if,
immediately following the opening brace of each function definition, the declaration
static const char _ _func_ _[] = "function-name";
appeared, where function-name is the name of the lexically-enclosing function.72)
2 This name is encoded as if the implicit declaration had been written in the source
character set and then translated into the execution character set as indicated in translation
phase 5.
3 EXAMPLE Consider the code fragment:
Код: plaintext
1.
2.
3.
4.
5.
6.
#include <stdio.h>
void myfunc(void)
{
printf("%s\n", _ _func_ _);
/* ... */
}

Each time the function is called, it will print to the standard output stream:
myfunc
Forward references: function definitions (6.9.1).

В программе это будет выглядеть вот так :
Код: plaintext
1.
2.
3.
4.
5.
static const char __func__[] = "myfunc";
void myfunc(void)
{
	printf("%s\n", __func__);
}



Зачем это нужно ? С квалификаторами const и static я согласен, но зачем именно такое именование переменной ? И зачем нужно добавлять "[]" ? И не очень понял почему привели именно этот пример, это настолько актуально ? Чем так важен идентификатор(токен) _ _func_ _ ? Подскажите пожалуйста.

Вот если была бы функция, вызов которой позволял выводить имя функции, предварительно не записывая его в константную статическую переменную, это было бы интересно. Правда пока не очень где это может пригодиться, но скорее всего применение найти можно было бы.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783583
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury,

Predefined означает заранее определенный.
Т.е. в данном случае определенный не в программе, а компилятором, автоматически.
Поэтому
SashaMercuryВ программе это будет выглядеть вот так :
Код: plaintext
1.
2.
3.
4.
void myfunc(void)
{
	printf("%s\n", __func__);
}


как если бы функция выглядела так
Код: plaintext
1.
2.
3.
4.
5.
void myfunc(void)
{
	static const char __func__[] = "myfunc";
	printf("%s\n", __func__);
}



ЗЫ. Стыдно через почти год изучения С не знать зачем тут []
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783592
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky
ЗЫ. Стыдно через почти год изучения С не знать зачем тут []

Смутило имя переменной, с двумя _ в начале и в конце.

И более привычна такая запись
Код: plaintext
1.
static const char* __func__ = "myfunc";
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783593
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно не понял зачем это нужно.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783598
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всмысле не зачем [] нужно, а зачем нужен этот механизм. И почему именно такое именование переменной __func__
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783679
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury,

Всё, что начинается с двух подчёркиваний, зарезервировано стандартом под компилятороспецифичные идентификаторы.
s[] — не то же самое, что *s, различия в размещении переменной в памяти и в её размере.
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783719
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RWolfSashaMercury,
s[] — не то же самое, что *s, различия в размещении переменной в памяти и в её размере.

Различие в том, что
Код: plaintext
1.
char s[]="abc";



есть определение массива на 4 элемента, s-имя массива, константа если хотите и адрес его первого элемента.

Код: plaintext
1.
char* s1="abc";



А s1 это переменная. К ней соответственно применимы s1++,s=new_p ; etc

Потому фраза выделенная красным некорректна. Или не до конца корректна, если кто придерётся.



Спасибо. Эти вещи мне были понятны(и я объяснил по какой причине я ошибся)
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783757
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryвсмысле не зачем [] нужно, а зачем нужен этот механизм.
для вызова деструкторов
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783825
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилSashaMercuryвсмысле не зачем [] нужно, а зачем нужен этот механизм.
для вызова деструкторовв С? откуда бы им там взяться, интересно?
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38783856
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychИзопропилпропущено...

для вызова деструкторовв С? откуда бы им там взяться, интересно?
там что-то про чисты С - было?
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38784068
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилтам что-то про чисты С - было?
Вся тема про чистый С, вообще-то, как и стандарт из которого цитата :)

ИзопропилSashaMercuryзачем нужен этот механизм.
для вызова деструкторов
А причем деструкторы к __func__ вообще непонятно. Можете объяснить? (Предположим, что мы говорим про С++)
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38784118
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyА причем деструкторы к __func__ вообще непонятно. Можете объяснить? (Предположим, что мы говорим про С++)

там два вопросв было - один насчёт []
второй насчёт идентификаторов с подчерками
...
Рейтинг: 0 / 0
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
    #38784153
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилтам два вопросв было - один насчёт []
второй насчёт идентификаторов с подчерками
Так. И какая связь деструкторов с любым из этих вопросов?
...
Рейтинг: 0 / 0
25 сообщений из 262, страница 7 из 11
Форумы / C++ [игнор отключен] [закрыт для гостей] / INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]