|
|
 |
Ответов
|
Jul 28 2010, 10:22
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(demiurg_spb @ Jul 27 2010, 21:16)  попробуйте так: Код (xxx != 0U) ? ... : ...; У Вас в настройках компилятора, видимо, задано трактовать char как unsigned char. А не всё ли равно, знаковое число или нет, при сравнении с нулём?
|
|
|
|
|
Jul 28 2010, 10:55
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(demiurg_spb @ Jul 28 2010, 14:46)  Это не глупости. Это зависит от уровня выдачи варнинга. Задаётся ключами для ЛЮБОГО компилятора. В настройках стоит All Warnings. И, тем не менее, компилируя unsigned char != 0 никаких предупреждений не выдаётся. Вы сами подумайте, зачем в данном случае необходимо предупреждение? Совершенно нормальная запись. А вот такое - 0U - выглядит довольно странно. Разве нуль может иметь знак?  Цитата Warn when a comparison between signed and unsigned values could produce an incorrect result Ну и как при сравнении целого числа (со знаком или без) на равенство нулю можно получить неверный результат?
|
|
|
|
|
Jul 28 2010, 18:18
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(sonycman @ Jul 28 2010, 14:55)  В настройках стоит All Warnings. И, тем не менее, компилируя unsigned char != 0 никаких предупреждений не выдаётся. Вы сами подумайте, зачем в данном случае необходимо предупреждение? Совершенно нормальная запись. А вот такое - 0U - выглядит довольно странно. Разве нуль может иметь знак?  Ну и как при сравнении целого числа (со знаком или без) на равенство нулю можно получить неверный результат? Сравнение с нулем для чисел без знака может не быть корректным в ряде случаев, например x<0, где x - данные без знака (unsigned). В таких случаях компилятор выдает предупреждение. Когда выполняется проверка на == / !=, то все выполняется корректно. То же самое относится и к сравнению чисел со знаком и без оного. Например, условие x <= -1 есть "Истина" (true), если x имеет тип unsigned.
|
|
|
|
|
Jul 28 2010, 19:05
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(_Bill @ Jul 28 2010, 22:18)  Сравнение с нулем для чисел без знака может не быть корректным в ряде случаев, например x<0, где x - данные без знака (unsigned). Конечно. В таком случае компилятор обязательно выдаст предупреждение, а то и ошибку. Но я то говорю о проверке на равенство нулю. В этом случае знак не имеет никакого значения. И вменяемый компилятор не будет пудрить мозги глупыми предупреждениями о том, чего не может быть в принципе.
|
|
|
|
|
Jul 29 2010, 03:40
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(sonycman @ Jul 28 2010, 23:05)  Конечно. В таком случае компилятор обязательно выдаст предупреждение, а то и ошибку.
Но я то говорю о проверке на равенство нулю. В этом случае знак не имеет никакого значения. И вменяемый компилятор не будет пудрить мозги глупыми предупреждениями о том, чего не может быть в принципе. Ну, да. Проверка на равенство/неравенство всегда будет выполняться корректно.
|
|
|
|
Сообщений в этой теме
fox1 warning: signed and unsigned type in conditional expression Jul 27 2010, 07:56      demiurg_spb Цитата(sonycman @ Jul 28 2010, 14:55) А в... Jul 28 2010, 11:00       sonycman Цитата(demiurg_spb @ Jul 28 2010, 15:00) ... Jul 28 2010, 11:03        demiurg_spb Ооо... Прощайте! Jul 28 2010, 11:11 rezident Предупреждение
Цитатаwarning: signed and unsigned ... Jul 27 2010, 23:05 fox1 Попробовал
px->n1 = px->prec < 0 ? str... Jul 29 2010, 07:11 sonycman Цитата(fox1 @ Jul 29 2010, 11:11) Попробо... Jul 29 2010, 09:58 xemul Если я правильно понял полёт Вашей мысли, то её мо... Jul 29 2010, 09:59 fox1 Код if(px->prec < 0) { px-... Jul 29 2010, 12:12
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|