Форум программистов, компьютерный форум CyberForum.ru

Условный оператор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ описание кода http://www.cyberforum.ru/cpp-beginners/thread863549.html
#include<conio.h> #include<stdio.h> const n=2; int c={{4,4},{4,4}}; int sum;
C++ Поиск корней уравнения Помогите найти ошибку. Написать и отладить программу поиска всех корней функции f(x) на от-резке , в соответствии. Метод нахождения корня оформить в виде отдельной функции. Найти корни методом секущих //--------------------------------------------------------------------------- #include <stdio.h> #include <math.h> #include <iostream.h> #pragma hdrstop ... http://www.cyberforum.ru/cpp-beginners/thread863547.html
Игра "Последняя буква" C++
Игра "Последняя буква". Режим рассчитан на двоих пользователей. Первый игрок вводит слово, необходимо вывести его последнюю букву на экран и предложить второму игроку ввести слово на данную букву. После ввода города вторым игроком проверить, начинается ли его слово на вышеуказанную букву. В случае ошибки вывести сообщение об этом и попросить повторить действия. Игра должна продолжаться до тех...
Определить количество гласных букв в словах C++
Даны три слова. Написать функцию, которая определяет сколько гласных букв в слове. Подсчитать с ее помощью количество гласных букв в каждом слове.
C++ Двунаправленный кольцевой список (удаление узлов) http://www.cyberforum.ru/cpp-beginners/thread863539.html
Помогите с удалением узлов из списка(~List). Не знаю как правильно удалять #include <iostream> typedef int dataList; class List { public: List(); List(dataList d);
C++ Определить количество знаков препинания в тексте Дан текст. Определить, сколько символов знаков препинания в нем (точка, запятая, двоеточие, тире, и пр.). подробнее

Показать сообщение отдельно
alkagolik
Заблокирован
13.05.2013, 18:23     Условный оператор
Цитата Сообщение от FacelessShadow Посмотреть сообщение
В свою очередь -1 - целое значение со знаком, которое дает в двоичном коде тот же набор бит 111...111. Компилятор считает, что -1 - это максимальное беззнаковое число, которое, конечно, больше чем 4. Поэтому условие выполняется
условно беззнаковый int "длинее", "больше" чем знаковый на один бит. По общему правилу вычисления условий в случае сравнения типов разных размеров -- тип меньшего размера неявно приводится к типу большего размера, далее вычисляется условное выражение и возвращается результат. В данном примере -1 будет приведен к беззнаковому числу 0xF...F, что безусловно больше чем беззнаковое 0x0..4. Почему сделано именно так -- неизвестно, но используя Си надо помнить о неявном приведении типов всегда и везде. Т.е. если функция принимает size_t, а мы передадим туда -1, то с точки зрения грамматики языка это не ошибка.

Цитата Сообщение от FacelessShadow Посмотреть сообщение
Как можно в языке сделать иначе?
явно привести макрос sizeof к знаковому типу int.

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