ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #5131  
Старый 16.04.2010, 00:33
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме:
5265510

Репутация: 455


По умолчанию

Цитата:
Потому что тип int по размеру больше чем char.
Где про это можно почитать подробней?
 

  #5132  
Старый 16.04.2010, 00:42
Ins3t
Участник форума
Регистрация: 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..
 

  #5133  
Старый 16.04.2010, 00:46
BrainDeaD
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
Провел на форуме:
3516666

Репутация: 439


По умолчанию

Цитата:
Сообщение от gold-goblin  
Где про это можно почитать подробней?
_http://www.languagec.info/preobr_tipov.php
_http://www.cppnet.ru/c/tipdan.html
 

  #5134  
Старый 16.04.2010, 00:47
fluffylion
Познающий
Регистрация: 22.02.2010
Сообщений: 30
Провел на форуме:
188597

Репутация: 15
По умолчанию

Цитата:
Сообщение от gold-goblin  
Где про это можно почитать подробней?
Например, С.Прата - Язык программирования C++.Лекции и упражнения

см. 3ю главу
 

  #5135  
Старый 16.04.2010, 00:48
gold-goblin
Познавший АНТИЧАТ
Регистрация: 26.03.2007
Сообщений: 1,095
Провел на форуме:
5265510

Репутация: 455


По умолчанию

Цитата:
В данном случае ASCI код символа 'a' равен 97.
что-то не сходится... если сразу ввести первое значение аски символом то программа не предлагает ввести 2 число а просто выводит ответ не соответствующий номерам аски.
 

  #5136  
Старый 16.04.2010, 01:02
Ins3t
Участник форума
Регистрация: 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..
 

  #5137  
Старый 16.04.2010, 13:58
Neith
Новичок
Регистрация: 14.02.2010
Сообщений: 2
Провел на форуме:
238326

Репутация: 0
По умолчанию

Здраствуйте Товарищи!
Объясните такую вещь.. Почему переменной (float) нельзя присвоить результат деления двух int переменных (например 5 и 7), чтобы результат получился дробный? Как выход, приходиться менять тип какой-нибудь одной или обеих int переменных на float. Другими словами, если для такой операции нужны float переменные, то почему нет какой-то строгости чтобы, например, обе переменные были типа float?
ПС. Использую VC++ 6.0

Последний раз редактировалось Neith; 16.04.2010 в 14:04..
 

  #5138  
Старый 16.04.2010, 14:24
fluffylion
Познающий
Регистрация: 22.02.2010
Сообщений: 30
Провел на форуме:
188597

Репутация: 15
По умолчанию

Потому что тип int предназначен для хранения целых чисел, и соответственно при делении двух переменных типа int в результате получается целое число - дробная часть отбрасывается.

Последний раз редактировалось fluffylion; 17.04.2010 в 01:11..
 

  #5139  
Старый 16.04.2010, 17:57
gold-goblin
Познавший АНТИЧАТ
Регистрация: 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 в таком случае приравнивается к отрицательному числу.
 

  #5140  
Старый 16.04.2010, 19:51
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

чтобы делить с остатком инты их надо приветси к флоэту

float result = static_cast<float>int1 / static_cast<float>int2;
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ