Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
#1

Как работает static_cast? - C++

13.08.2015, 11:47. Просмотров 1041. Ответов 30
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
using namespace std;
int main(){
    int a;
    cin>>a;
    
    cout<<sizeof(a)<<endl;//4
    static_cast<char>(a);
    cout<<sizeof(a)<<endl;//4???
    
    
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2015, 11:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как работает static_cast? (C++):

Каким образом работает static_cast в данном выражении
#include&lt;iostream&gt; using namespace std;...

Static_cast
Подскажи пожалуста return static_cast&lt;double&gt;(get_num())/get_den(); как это...

static_cast
В чем ошибка. ругается на &lt; и ( в строке newpound=static_cast&lt;int&gt;(newpound);...

static_cast
Почему не работает static_cast&lt;float&gt;(n/m);? Как сделать чтобы он все же...

static_cast, исключение
Привет. dynamic_cast&lt;&gt; может выбросить исключение, при невозможности...

Использование static_cast
Здравствуйте! Подскажите, почему такая конструкция не компилируется. int...

30
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,226
Записей в блоге: 23
13.08.2015, 14:06 #21
Лучший ответ Сообщение было отмечено anti-k как решение

Решение

anti-k, пришли к пластическому хирургу Статику Кастовичу две подружки - Чар и Инт. И просят сделать нос char'ки такой же как у int'ки. В итоге, к носу Инт'ки никто даже не прикасается, её тип нос для хирурга просто как пример. А вот с Чар'кой поработали и теперь она тоже Инт.
2
nmcf
13.08.2015, 14:07
  #22

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
и теперь она тоже Инт
Удлинили, в два раза?

0
gru74ik
13.08.2015, 14:10
  #23

Не по теме:

nmcf, да хрен их баб разберёт. Может удлинили, а может горбинку убрали.

0
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
13.08.2015, 14:13  [ТС] #24
gru74ik,
C++
1
2
3
int e=6;
char d=e;
cout<<sizeof(d);//1  В таком случае каст вообще не нужен? А каким образом меняется тип уже объявленной переменной?
0
John Prick
831 / 764 / 256
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
13.08.2015, 14:14 #25
Цитата Сообщение от anti-k Посмотреть сообщение
А каким образом меняется тип уже объявленной переменной?
Никаким
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
13.08.2015, 14:21 #26
Цитата Сообщение от anti-k Посмотреть сообщение
В таком случае каст вообще не нужен?
В таком случае происходит неявное преобразование типа. И как раз на такое преобразование компилятор может ответить предупреждением.
1
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
13.08.2015, 14:23  [ТС] #27
John Prick, ))) Вот тебе бабушка и Юръев день ))

Добавлено через 1 минуту
Kerry_Jr, А можно получить адрес этой временной переменной?
0
John Prick
831 / 764 / 256
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 3
13.08.2015, 14:25 #28
Лучший ответ Сообщение было отмечено anti-k как решение

Решение

anti-k, C++ - язык со статической типизицией. Это значит, что раз написав int a, ты навсегда сделал а типа int.

C++
1
2
int a = 1000;
char b = static_cast<char>(a);
Здесь а не стала char'ом, b не стала int'ом. Здесь как бы указание "что было бы, если бы a было char'ом".
2
gru74ik
Модератор
Эксперт CЭксперт С++
4648 / 1962 / 293
Регистрация: 20.02.2013
Сообщений: 5,226
Записей в блоге: 23
13.08.2015, 14:26 #29
anti-k, в твоём примере подружки пошли не к пластическому хирургу, а напились пьяными и в тёмном переулке одной дали по башке, а когда она очнулась то даже не заметила, как от удара по голове стала такой же глупой, как и её товарка, которой по башке не перепало.
2
anti-k
227 / 75 / 31
Регистрация: 17.07.2015
Сообщений: 774
Завершенные тесты: 1
13.08.2015, 14:32  [ТС] #30
gru74ik, Рукоплещу )
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
13.08.2015, 14:44 #31
Цитата Сообщение от anti-k Посмотреть сообщение
временной переменной?
нет. Как Вы это сделаете? Да и зачем, собственно?
Приведу пример. У меня есть функция, например
C++
1
2
3
4
5
6
int func (int a, int b)
{
    int c = a + b;
    
    return c;
}
Вам эту функцию я поставляю в качестве файла заголовка и библиотеки к нему. Т.е. доступа к исходному коду определения ф-ции у Вас нет. Вопрос сможете ли Вы достучаться извне до адреса переменной с? Ответ нет. Да и толку в этом не будет, даже если сможете, т.к. после выхода из функции по адресу переменной с будет лежать неизвестно что.
1
13.08.2015, 14:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2015, 14:44
Привет! Вот еще темы с решениями:

Оператор static_cast
int N; cout &lt;&lt; &quot;введите размер маccива: &quot;; cin &gt;&gt; N; vector&lt;double&gt;...

Ключевое слово static_cast
Чё это такое?Зачем оно нужно?

Reinterpret_cast отличие от static_cast
Почему так? class Base1{ public: int B; virtual void F(){} }; ...

Не очень понимаю static_cast
Цитирую Прата: Под она имеется в виду операция static_cast Эксперимент: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru