ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

16.04.2010, 00:33
|
|
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме: 5265510
Репутация:
455
|
|
Потому что тип int по размеру больше чем char.
Где про это можно почитать подробней?
|
|
|

16.04.2010, 00:42
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме: 2083691
Репутация:
330
|
|
Сообщение от gold-goblin
Вопрос: почему переменной типа int можно присвоить чаровское (буквенное значение) и операция выполнится? почему не произойдет ошибки?
Ты присваиваешь типу int ASCI код символа:
Код:
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#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.
Последний раз редактировалось Ins3t; 16.04.2010 в 00:45..
|
|
|

16.04.2010, 00:46
|
|
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме: 3516666
Репутация:
439
|
|
Сообщение от gold-goblin
Где про это можно почитать подробней?
_http://www.languagec.info/preobr_tipov.php
_http://www.cppnet.ru/c/tipdan.html
|
|
|

16.04.2010, 00:47
|
|
Познающий
Регистрация: 22.02.2010
Сообщений: 30
Провел на форуме: 188597
Репутация:
15
|
|
Сообщение от gold-goblin
Где про это можно почитать подробней?
Например, С.Прата - Язык программирования C++.Лекции и упражнения
см. 3ю главу
|
|
|

16.04.2010, 00:48
|
|
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме: 5265510
Репутация:
455
|
|
В данном случае ASCI код символа 'a' равен 97.
что-то не сходится... если сразу ввести первое значение аски символом то программа не предлагает ввести 2 число а просто выводит ответ не соответствующий номерам аски.
|
|
|

16.04.2010, 01:02
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 272
Провел на форуме: 2083691
Репутация:
330
|
|
Не совсем понял.
Куда вводишь?
Код:
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
cout << static_cast<int>('c') << " = " << static_cast<char>(99);
return 0;
}
//////////////////////////////////////////////////////////////////////////
Все сходится.
---
UPD:
Или же, если ты хотел получить аски нескольких символов:
Код:
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#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;
}
//////////////////////////////////////////////////////////////////////////
Последний раз редактировалось Ins3t; 16.04.2010 в 01:34..
|
|
|

16.04.2010, 13:58
|
|
Новичок
Регистрация: 14.02.2010
Сообщений: 2
Провел на форуме: 238326
Репутация:
0
|
|
Здраствуйте Товарищи!
Объясните такую вещь.. Почему переменной (float) нельзя присвоить результат деления двух int переменных (например 5 и 7), чтобы результат получился дробный? Как выход, приходиться менять тип какой-нибудь одной или обеих int переменных на float. Другими словами, если для такой операции нужны float переменные, то почему нет какой-то строгости чтобы, например, обе переменные были типа float?
ПС. Использую VC++ 6.0
Последний раз редактировалось Neith; 16.04.2010 в 14:04..
|
|
|

16.04.2010, 14:24
|
|
Познающий
Регистрация: 22.02.2010
Сообщений: 30
Провел на форуме: 188597
Репутация:
15
|
|
Потому что тип int предназначен для хранения целых чисел, и соответственно при делении двух переменных типа int в результате получается целое число - дробная часть отбрасывается.
Последний раз редактировалось fluffylion; 17.04.2010 в 01:11..
|
|
|

16.04.2010, 17:57
|
|
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме: 5265510
Репутация:
455
|
|
Сообщение от Ins3t
Не совсем понял.
Куда вводишь?
Код:
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#include <iostream>
using std::cout;
//////////////////////////////////////////////////////////////////////////
int main( int argc, char * argv[] )
{
cout << static_cast<int>('c') << " = " << static_cast<char>(99);
return 0;
}
//////////////////////////////////////////////////////////////////////////
Все сходится.
---
UPD:
Или же, если ты хотел получить аски нескольких символов:
Код:
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
#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;
}
//////////////////////////////////////////////////////////////////////////
Есть такой код
Код:
#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 в таком случае приравнивается к отрицательному числу.
|
|
|

16.04.2010, 19:51
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
чтобы делить с остатком инты их надо приветси к флоэту
float result = static_cast<float>int1 / static_cast<float>int2;
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|