Вопрос: почему переменной типа int можно присвоить чаровское (буквенное значение) и операция выполнится? почему не произойдет ошибки?
Ты присваиваешь типу int ASCI код символа: Code: ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// #include <iostream> using std::cout; using std::endl; ////////////////////////////////////////////////////////////////////////// int main( int argc, char * argv[] ) { int var = 'a'; cout << var << endl; return 0; } ////////////////////////////////////////////////////////////////////////// В данном случае ASCI код символа 'a' равен 97.
что-то не сходится... если сразу ввести первое значение аски символом то программа не предлагает ввести 2 число а просто выводит ответ не соответствующий номерам аски.
Не совсем понял. Куда вводишь? Code: ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// #include <iostream> using std::cout; ////////////////////////////////////////////////////////////////////////// int main( int argc, char * argv[] ) { cout << static_cast<int>('c') << " = " << static_cast<char>(99); return 0; } ////////////////////////////////////////////////////////////////////////// Все сходится. --- UPD: Или же, если ты хотел получить аски нескольких символов: Code: ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// #include <iostream> using std::cout; using std::endl; using std::cin; ////////////////////////////////////////////////////////////////////////// int main( int argc, char * argv[] ) { char var[256]; cin.getline( var, 255 ); for( int i = 0; i < strlen( var ); i++ ) { cout << var[i] << " = " << static_cast<int>( var[i] ) << endl; } return 0; } //////////////////////////////////////////////////////////////////////////
Здраствуйте Товарищи! Объясните такую вещь.. Почему переменной (float) нельзя присвоить результат деления двух int переменных (например 5 и 7), чтобы результат получился дробный? Как выход, приходиться менять тип какой-нибудь одной или обеих int переменных на float. Другими словами, если для такой операции нужны float переменные, то почему нет какой-то строгости чтобы, например, обе переменные были типа float? ПС. Использую VC++ 6.0
Потому что тип int предназначен для хранения целых чисел, и соответственно при делении двух переменных типа int в результате получается целое число - дробная часть отбрасывается.
Есть такой код Code: #include "stdafx.h" #include <iostream> using namespace std; int main() { int integer1, integer2, sum; cout << "введите первое число \n"; cin >> integer1; cout << "Введите второе число \n"; cin >> integer2; sum = integer1 + integer2; cout <<"Сумма равна" << sum <<endl; return 0; } Если integer1 приравнять (ввести) аски символ то вы полняются все строки кода кроме cin >> integer2;/ Sum в таком случае приравнивается к отрицательному числу.
чтобы делить с остатком инты их надо приветси к флоэту float result = static_cast<float>int1 / static_cast<float>int2;
Code: #include "stdafx.h" #include <iostream> using namespace std; unt main() { setlocale( 0, "Rus" ); int num1, num2; cout << "Введите первое число\n"; cin >> num1; cout << "Введите второе число\n"; cin >> num2; cout << "Проведем простейший анализ файла\n"; if (num1 == num2) cout << num1 << " Равно " << num2 << endl; if (num1 != num2) cout << num1 << " не равно " << num2 << endl; if (num1 < num2) cout << num1 << " меньше " << num2 << endl; if (num1 > num2) cout << num1 << " больше " << num2 << endl; cout << "Сумма этих чисел равна :\n" << num1 + num2 << endl; return 0; } И где можно прочитать про разницу старых книг и нового (измененого) синтаксиса языка?
В данном случае cin >> будет безошибочно считывать только цифровые символы, т.к. значение переменной, куда будет записан результат имеет тип int. Если же ввести например 123a, то integer1 будет равен 123, символ 'a' не учтется. При этом также будет установлен бит ошибки (failbit) и следовательно выражение cin >> integer2; не выполнится, так как установлен один из битов состояния потока (cin). Отрицательное или некорректное значение в sum при неправильном вводе получается из-за того, что локальные переменные при создании не обнуляются.
всем привет.народ,подскажите плиз,как на С++ возводить отрицательное число в степень.прост я знаю как это сделать только через ln, а с отрицательными эт не прокатывает
В math.h (cmath) есть функции pow и powl. Или же нижеследующая функция (не учитывает переполнение): Code: int pow(int nNumber, unsigned int unP) { int nRes = 1; if (nNumber != 0) { while (unP--) nRes *= nNumber; } else nRes = 0; return nRes; }
fluffylion, спасиб, но уже сам разобрался.Вопрос конечно не в тему, но может у кого учебник есть или сайт какой знаете, где описано нахождение экстремума функции методом двух касательных,насколько я понял это же метод Ньютона