Как изменить тип переменных? С++

Как изменить тип одной или нескольких переменных? (например с int на float) С++

Ответ

Достаточно сконвертить только одну правильную переменную во время операции, дальше уже пойдет приоритет типов операторов. Т.е.
float r1 = 10 / 3; // 3
float r2 = (float)10 / 3; // 3.33
float r3 = 10.0f / 3; // 3.33
float r4 = 10 / 3.0f; // 3.33


Views: 3 201

ehnaton #1 - 7 years ago 0
Голосов: +0 / -0
(float)m, где m - int
замечу, что работает не для всех переменных. Для некоторых конверты надо ручками писать.
Praytic #2 - 7 years ago 0
Голосов: +0 / -0
А для нескольких переменных? Для 8 скажем.
ehnaton #3 - 7 years ago 0
Голосов: +0 / -0
Praytic, ой, да я забыл спросить язык) Это если что для С#.
Не дочитал, сори)
Хотя, там одинаково.
А для нескольких - в каком смысле?
Praytic #4 - 7 years ago 0
Голосов: +0 / -0
А для нескольких - в каком смысле?
Можно для одной, а можно для нескольких... Типа можно так: cout << "lol"; cout << "poo"; cout << "dauym"; cout << "wat?"; А можно так: cout << "lol << "poo" << "dauym" << "wat?"; Как-то так. ._.
GeneralElConsul #5 - 7 years ago 0
Голосов: +0 / -0
Типа можно так: cout << "lol"; cout << "poo"; cout << "dauym"; cout << "wat?"; А можно так: cout << "lol << "poo" << "dauym" << "wat?";
Ты сейчас записал равные по результату операции занесения в поток? Пока вообще не понятно, что ты хочешь сказать.
Приведение типов происходит как описать эхнатон, для нескольких переменных - пиши для каждой приписку или пробуй такую вещь: (float) int1, int2, int3; Первое точно получится, второе - не знаю.
Praytic #6 - 7 years ago 0
Голосов: +0 / -0
Не получается. Мне вот нужно провести арифметические операции с int переменнами и присвоить их float: first = op1_1+(op1_2+op1_3/12)/20; Но сначала наверное их надо перевести в тот же тип самому или есть другой способ?
GeneralElConsul #7 - 7 years ago (изм. ) -1
Голосов: +0 / -1
Тогда примерно так:
first = op1_1+(op1_2+op1_3/12)/20;
float first_float;
first_float = (float) first;
ZregerZ #8 - 7 years ago (изм. ) 0
Голосов: +0 / -0
Оператор приведения
Нда, всё равно не совсем то, почитай про преобразования типов в выражениях и о явном приведении типов.
(Например Шилдт Полный справочник по С++ 4-е издание конец 2й главы)
nvc123 #9 - 7 years ago -2
Голосов: +0 / -2
first = (float)(op1_1+(op1_2+op1_3/12)/20);
так короче
ZregerZ #10 - 7 years ago 0
Голосов: +0 / -0
nvc123, совершенно бессмысленное преобразование.
nvc123 #11 - 7 years ago (изм. ) 0
Голосов: +0 / -0
ZregerZ, и чем оно бессмысленно?
оно ничем не отличается от того что написал ген
просто короче
prog #12 - 7 years ago 0
Голосов: +0 / -0
И тот и другой вариант дадут жару, если операнды целочисленные - деление может пойти совсем не так, как хотелось бы.
GeneralElConsul #13 - 7 years ago (изм. ) 0
Голосов: +0 / -0
И тот и другой вариант дадут жару, если операнды целочисленные - деление может пойти совсем не так, как хотелось бы.
Понял тебя, я немного не туда завернул, подумав, что ему главное получить float-ский результат.
Автор, ну тогда ничего не остается кроме явного приведения каждой переменной.
alexprey #14 - 7 years ago (изм. ) 1
Голосов: +1 / -0

Достаточно сконвертить только одну правильную переменную во время операции, дальше уже пойдет приоритет типов операторов. Т.е.
float r1 = 10 / 3; // 3
float r2 = (float)10 / 3; // 3.33
float r3 = 10.0f / 3; // 3.33
float r4 = 10 / 3.0f; // 3.33
prog #15 - 7 years ago 0
Голосов: +0 / -0
alexprey, одну, но только правильно выбранную: float x = (float)5 + 10/3; не даст желаемого результата, если я ничего не путаю.
alexprey #16 - 7 years ago 0
Голосов: +0 / -0
prog, да точно, я хотел сказать, что надо правильную выбрать