нет ли оператор в c для изменения знака международного плавания и т.д. от отрицательного до положительного или наоборот?

при попытке найти абсолютное значение и я думал, что был простой способ просто инвертировать знак с '~' или чем-то.

9
задан nickthedude 8 January 2010 в 05:51
поделиться

6 ответов

float newValue = oldValue * -1;

или

float newValue = -(oldValue); //() aren't needed, I just use them out of habit
21
ответ дан 4 December 2019 в 05:56
поделиться

Чтобы инвертировать знак, поставьте перед ним минус.

12
ответ дан 4 December 2019 в 05:56
поделиться

Простое отрицание с помощью - работает, но большинство ответов проигнорировали тот факт, что ОП пытается сделать абсолютное значение. Для этого правильным инструментом является abs() для целых чисел и fabs() для флотов. Код будет кристально чистым, и результат будет таким, каким вы ожидаете. (Правка: Обязательно прочитайте документацию и ошибки для этих инструментов. Как указывает Ник, отрицание самого отрицательного числа с помощью abs() возвращает то же самое отрицательное число.)

.
12
ответ дан 4 December 2019 в 05:56
поделиться

Оператор унарного отрицания -(expr) делает именно то, что Вам нужно.

int x = -7;
int y = 7;
x = -x; // x is now 7
y = -y; // y is now -7

Битовый оператор дополнения ~(expr), который Вы упомянули, с другой стороны, переворачивает все биты во входном сигнале.

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

8
ответ дан 4 December 2019 в 05:56
поделиться

-x даст вам значение x с инвертированным знаком.

4
ответ дан 4 December 2019 в 05:56
поделиться

х = 0 - х;

? или я упустил суть?

1
ответ дан 4 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: