комплексные числа — Что такое десятичная точка (‘.’) в C ++ и можно ли ее сделать?

Я сейчас нахожусь в классе C ++, поэтому этот вопрос будет касаться в первую очередь этого языка, хотя я также не смог найти никакой информации для любого другого языка, и у меня есть ощущение, что ответ, вероятно, в значительной степени является межъязыковым.

Предполагается, что в C ++ немаркированные числа имеют целочисленный тип (например, «4» — целое число)
различные ограничительные метки позволяют по-разному интерпретировать число (например, «4» — это символ, «4» — строка).

Насколько я знаю, есть только один вид унарного знака: десятичная точка. («4.» — двойная).

Я хотел бы создать новую унарную метку, которая обозначает постоянное число в коде, которое будет интерпретироваться как член созданного типа данных. Более фундаментально, я хотел бы знать, что ‘.’ и ‘,’ и » ‘, и’ » (они не являются операторами, ключевыми словами или операторами, и что это такое?) и как компилятор обрабатывает / интерпретирует их.


Больше информации, если вы считаете это необходимым:

Я пытаюсь сделать заголовок сложного числа, который я могу включить в любой проект, чтобы сделать сложную математику. Я знаю о библиотеке, но она, ИМХО, некрасива и, если ее использовать, значительно замедляет время кодирования. Также я в основном пытаюсь написать код, чтобы улучшить свои навыки программирования. Моя цель — иметь возможность объявлять сложную переменную, выполняя что-то в форме cmplx num1= 3 + 4i; где «3» и «4» — произвольные, а «i» — метка, похожая на десятичную точку, которая обозначает «4» как мнимую.

0

Решение

Я хотел бы создать новую унарную метку, которая обозначает постоянное число в коде, которое будет интерпретироваться как член созданного типа данных.

Ты можешь использовать пользовательские литералы которые были введены в C ++ 11. Например, если у вас есть тип класса Type и вы хотите использовать num_y синтаксис, где num это NumericType, ты можешь сделать:

Type operator"" _y(NumericType i) {
return Type(i);
}

Живая демо

3

Другие решения

Вещи как 4, "4" а также 4. все одиночные токены,
неделимый. Вы не можете добавлять новые токены в
язык. В C ++ 11 возможно определить пользовательский
литералы, но они все еще состоят из нескольких токенов; для сложных,
гораздо более естественным решением было бы поддерживать постоянный i,
разрешить писать такие вещи, как 4 + 3*i, (Но вам все равно нужно
поддержка C ++ 11 для constexpr чтобы это было время компиляции
константа.)

1

По вопросам рекламы [email protected]