Constantine
все стартовые коды особенные, а ASCII однобайтово
Anatoly
bom в utf8?
https://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom
Constantine
Ivan
ну, если его конвертили откуда-то (откуда ошибка?) то он нужен
Ivan
хотя да, конечно, свойство сохранится, с этим я поторопился
Aidar
Aidar
Ответ нет
Constantine
т.е. ошибка будет касаться только символов, в которых ошибка
Constantine
не байтов, а символов
Constantine
вопрос: можно ли реплейсом заменять ASCII диапазон? ответ: да
Constantine
вопрос: можно ли реплейсом заменять utf8 последовательность на utf8 последовательность?
ответ: да
Александр
Это круто. Спасибо. Я знал про некоторые свойства утфа, но не про это
Constantine
оно легко доказывается
Constantine
первый байт явно указывает длину
Constantine
и такой байт никогда не встречается не первым в кодпоинте
Constantine
т.е. если правильная utf8 подстрока встречается в utf8 строке, то границы символов не могут не совпасть
Max
UB?
struct delist_t* list = (delist_t*)std::malloc(sizeof *list);
Constantine
почему бы?
Max
*list - разыменование
Constantine
sizeof невычисляющий контекст
ttldtor
а зачем так?)
Max
нашел кодец одного dm.
Constantine
int x[10];
sizeof (x[100]); //ok
Max
вау, прикольно
Constantine
и да, просьба уточнять, речь о С или С++
Max
там же std::
Constantine
хм...
Anonymous
Constantine
они чем то отличаются ?
домашнее задание: написать программу, которая не содержит макросов, компилируется на С и С++ и выводит, какой язык
Anonymous
Max
ну блин, солянка)
Constantine
malloc в C++ это не очень best practices
Matwey
Matwey
В новый стандарт емнип добавили шаблон в глобальный неймспейс
Matwey
И теперь abs(3.15) возвращает 3.15, а не 3 как в C
Ignat
Constantine
забавно
Matwey
А что за пример через 'a'?
Constantine
Constantine
тип 'a' в С это int
Ignat
он не полагается на то, что sizeof(int) != 1 на твоей платформе?
Constantine
а, действительно
Constantine
в С же есть overloaded functions :)
Constantine
всегда можно тип спросить через overload resolution
Roman
Ignat
Ignat
ну то есть как раз перегруженные функции есть в крестах, но суть ясна
Ignat
extern int T;
int size(void)
{
struct T { int i; int j; };
return sizeof(T);
/* C: return sizeof(int)
* C++: return sizeof(struct T)
*/
}
Ignat
такое выглядит понадёжнее
Roman
там же о с
Oleg
Oleg
а не, все норм
Constantine
Roman
Символьный литерал в Си имеет тип int. По стандарту тип int должен именть разрядность обеспечивающую хранения диапазона минимум от -32768 32767 т.е. минимум 2 байта.
Constantine
Roman
— minimum value for an object of type int
INT_MIN -32767 // −(215 − 1)
Roman
А тип char?
Aninteger constant expression117) shall have integer type and shall only have operands
that are integer constants, enumeration constants, character constants, sizeof
expressions whose results are integer constants, and floating constants that are the
immediate operands of casts. Cast operators in an integer constant expression shall only
convert arithmetic types to integer types, except as part of an operand to the sizeof
operator.
Roman
А в плюсах character constants это char
Constantine
Вы не ответили на вопрос
Roman
а тип char?
Constantine
Да, какие ограничения наложены на тип char?
Roman
в с++?
Constantine
Что они запрещают типу char иметь диапазон значений -32768 32767?
Constantine
в С или С++
Aidar
я почти знаю
Aidar
минимум 256 различимых значений
Aidar
а еще вроде явно минимум 8 бит
Aidar
а еще sizeof==1 но это уже языковые фичи(языковой байт)
Constantine
в с++?
подсказка: Андрей Александреску уверен, что sizeof(int) может быть равен 1 в стандарте С++98