Я сейчас нахожусь в классе C ++, поэтому этот вопрос будет касаться в первую очередь этого языка, хотя я также не смог найти никакой информации для любого другого языка, и у меня есть ощущение, что ответ, вероятно, в значительной степени является межъязыковым.
Предполагается, что в C ++ немаркированные числа имеют целочисленный тип (например, «4» — целое число)
различные ограничительные метки позволяют по-разному интерпретировать число (например, «4» — это символ, «4» — строка).
Насколько я знаю, есть только один вид унарного знака: десятичная точка. («4.» — двойная).
Я хотел бы создать новую унарную метку, которая обозначает постоянное число в коде, которое будет интерпретироваться как член созданного типа данных. Более фундаментально, я хотел бы знать, что ‘.’ и ‘,’ и » ‘, и’ » (они не являются операторами, ключевыми словами или операторами, и что это такое?) и как компилятор обрабатывает / интерпретирует их.
Больше информации, если вы считаете это необходимым:
Я пытаюсь сделать заголовок сложного числа, который я могу включить в любой проект, чтобы сделать сложную математику. Я знаю о библиотеке, но она, ИМХО, некрасива и, если ее использовать, значительно замедляет время кодирования. Также я в основном пытаюсь написать код, чтобы улучшить свои навыки программирования. Моя цель — иметь возможность объявлять сложную переменную, выполняя что-то в форме cmplx num1= 3 + 4i;
где «3» и «4» — произвольные, а «i» — метка, похожая на десятичную точку, которая обозначает «4» как мнимую.
Я хотел бы создать новую унарную метку, которая обозначает постоянное число в коде, которое будет интерпретироваться как член созданного типа данных.
Ты можешь использовать пользовательские литералы которые были введены в C ++ 11. Например, если у вас есть тип класса Type
и вы хотите использовать num_y
синтаксис, где num
это NumericType
, ты можешь сделать:
Type operator"" _y(NumericType i) {
return Type(i);
}
Вещи как 4
, "4"
а также 4.
все одиночные токены,
неделимый. Вы не можете добавлять новые токены в
язык. В C ++ 11 возможно определить пользовательский
литералы, но они все еще состоят из нескольких токенов; для сложных,
гораздо более естественным решением было бы поддерживать постоянный i
,
разрешить писать такие вещи, как 4 + 3*i
, (Но вам все равно нужно
поддержка C ++ 11 для constexpr
чтобы это было время компиляции
константа.)