Форум программистов, компьютерный форум, киберфорум
Наши страницы

сравнение знаковых и беззнаковых чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ квадратная матрица http://www.cyberforum.ru/cpp-beginners/thread409284.html
Дана целочисленная квадратная матрица. Определить максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
C++ Не могу добавить \ Здравствуйте, вот код: GetCurrentDirectory(256, lpBuffer); strcat(lpBuffer,"\"); strcat(lpBuffer,pDrvName); awPath = lpBuffer; Так как знак "\" является одной из скобок языка, не... http://www.cyberforum.ru/cpp-beginners/thread409280.html
C++ Функции в С++
Помогите пожалуйста решить одну задачу с использованием функции: Дано N треугольников, ввести их координаты, т.е x1,y1,x2,y2,x3,y3 и вывести на экран площадь наибольшего треугольника. У меня...
C++ char массив - цикл for
Вообщем ситуация такая, есть такие условия char ch_number1; const int arrSize = 25; Пользователь должен ввести число в массив - и только цифры: Нужно в char-овский массив проверить на значения -...
C++ Определить класс "Школьник" http://www.cyberforum.ru/cpp-beginners/thread409248.html
Помогите, пожалуйста, с языком я плохо знаком, без помощи не разберусь:( Определить класс "Школьник", предусмотрев в нем компонентные данные: фамилия, имя, отчество, адрес, край, область, город,...
C++ Расположить массив из русских букв по порядку Не могу справится с задачей..Как можно более полно описывайте суть проблемы или вопроса, что было сделано для ее решения и какие результаты получены. подробнее

Показать сообщение отдельно
yekka
386 / 150 / 8
Регистрация: 12.05.2011
Сообщений: 450

сравнение знаковых и беззнаковых чисел - C++

16.12.2011, 21:34. Просмотров 2801. Ответов 3
Метки (Все метки)

Возьмем пример:
C++
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main() {
  if ( 1U > -1 ) 
    printf("1 > -1");
  else
    printf("1 <= -1\n");
}
Как бы абсурдно это не выглядело, но результатом выполнения этой программы будет строка "1 <= -1".
Насколько я понимаю, -1 в памяти хранится как FF FF FF FF и если интерпретировать такую последовательность битов как беззнаковое число, то оно, естественно, будет больше единицы. Но если убрать из этого примера буковку 'U', то последовательности сравниваемых битов останутся совершенно теми же, но получим теперь уже "верный" результат "1 > -1", так как числа будут интерпретироваться с учетом знака.

И вот что мне совершенно непонятно, так это почему в языке выбрано именно такое неочевидное и провоцирующее ошибки поведение при сравнении знаковых и беззнаковых целых чисел?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.