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

int/int != float? Why not? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Оператор while! http://www.cyberforum.ru/cpp-beginners/thread977469.html
задача надо решить с помощью оператора while! Найдите ошибку,где-та ошибка.Программа выдает не правильный ответ.Помогите,завтра надо сдать!
C++ Циклический сдвиг числа Написать программу, которая предлагает пользователю ввести пятизначное число и циклически сдвигает его влево и выводит результат в консоль. Например, пользователь вводит число 12345, и получает результат 34512. использовать только for http://www.cyberforum.ru/cpp-beginners/thread977455.html
C++ Нужен пример турнирной сортировки
Здравствуйте! Мне очень нужен пример турнирной сортировки , нигде не могу её найти . Читал про пирамидальную - это не турнирная случайно? Помогите , пожалуйста. Нужно очень срочно . Заранее огромное спасибо!!!
Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент четных и нечетных чисел и выводит результат в консоль C++
Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент четных и нечетных чисел и выводит результат в консоль. использовать только for
C++ Написать программу, которая предлагает пользователю ввести число и выводит в консоль все числа, на которые введенное делится без остатка http://www.cyberforum.ru/cpp-beginners/thread977425.html
Написать программу, которая предлагает пользователю ввести число и выводит в консоль все числа, на которые введенное делится без остатка. использовать только for
C++ Написать программу, которая предлагает пользователю ввести число и выводит в консоль его факториал Написать программу, которая предлагает пользователю ввести число и выводит в консоль его факториал. использовать только for . подробнее

Показать сообщение отдельно
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
14.10.2013, 20:53     int/int != float? Why not?
Переменные b и c являются целочисленными переменными типа int. Часто бывает, что в выражениях языка С++, типы операндов отличаются. Т.е., например, в той же операции деления x/y, типы переменных x и y могут быть разными. В этом случае осуществляется так называемое автоматическое приведение типов данных, т.е. компилятор приводит операнды в выражении к одному типу. Не буду вдаваться в особенности конкретных типов и какие преобразования при этом выполняются, т.к. эта довольна обширная и отдельная для обсуждения тема.

В данном случае, в выражении b/c оба операнда имеют тип int, собственно никаких преобразований выполнять не надо, в результате будет выполняться целочисленное деление 1/3 = 0. Далее, это значение 0 типа int присваивается переменной a типа float. Здесь опять осуществляется автоматическое преобразование типов: осуществляется преобразование типа результата выражения к типу l-операнда, т.е. к типу переменной a (float). Но, по-умолчанию, компилятор отбрасывает лидирующие нули, т.е. если мы переменной a присвоим значение 1.000000 по-умолчанию в нее запишется значение 1. Существует несколько способов заставить компилятор выводить лидирующие нули, регулировать кол-во знаков после "запятой" и т.д.

Вообще, советую пользоваться отладчиком, "поиграться" с типами переменных, различными их значениями, посмотреть отладчиком, как будут изменяться типы результирующих выражений и т.д., вариантов много.

На счет книги, лично мне нравится книга С.Прата "Язык программирования С++. Лекции и упражнения". Из названия легко догадаться, что теория сопровождается решением задач. Желательно издательство поновее, например 2011 года.

Удачи.
 
Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru