правильно ли исправлять конверсию и потерю данных предупреждений? - PullRequest
0 голосов
/ 07 ноября 2010

У меня есть класс с именем PointF, и у него есть конструктор, который принимает Point, и я продолжаю получать "возможную потерю предупреждений о данных".Как я могу показать, что мое намерение состоит в том, чтобы превратить значение float в int, среди прочих вещей?Я пробовал static_cast и (float), но они не исправили предупреждение.

Например:

int curPos = ceil(float(newMouseY / font.getLineHeight())) ; //float to int

И

outputChars[0] = uc; //converting from size_t to char

Ответы [ 4 ]

1 голос
/ 07 ноября 2010

Актер должен сделать трюк; который говорит «явно превращать этот тип в этот тип», что, как правило, довольно глупо для компилятора предупреждать:

int curPos = static_cast<int>(ceil(float(newMouseY / font.getLineHeight())));

Или:

outputChars[0] = static_cast<char>(uc);

Удостоверьтесь, что приведенные вами слепки сродни этому. Вы говорите: «Я пытался ... (float)», и это заставляет меня поверить, что вы пробовали что-то вроде этого:

int curPos = (float)(ceil(float(newMouseY / font.getLineHeight())));

Который ничего не делает. Тип выражения уже float, что будет делать приведение к тому же типу? Вам нужно привести его к типу получателя.


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

Но ваш второй актерский состав - нет. Почему uc a size_t на первом месте? Что происходит, когда актер пропускает информацию? Это действительно хорошая идея?

0 голосов
/ 07 ноября 2010

Вы должны привести свою переменную к нормальному способу изменения типа ее. И если вы пытаетесь преобразовать size_t в char, то вы пытаетесь сохранить 4 bytes в 1 byte, потеря данных - это нормальная вещь.

0 голосов
/ 07 ноября 2010

вам, возможно, придется использовать явное приведение, то есть

int curPos = int (ceil (...));

0 голосов
/ 07 ноября 2010

Вам необходимо привести результат ceil, предпочтительно с static_cast.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...