Форум программистов, компьютерный форум, киберфорум
Наши страницы

операторы преобразования типов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление факториала http://www.cyberforum.ru/cpp-beginners/thread25247.html
Нужно заставить программу выводить результат, но почему то не получается #include <stdio.h> #include <conio.h> int f(int); void main() { double C; int m, n, z;
C++ Копирование с класса в класс Админы удалите топик, нечайно создал.... протупил.. http://www.cyberforum.ru/cpp-beginners/thread25232.html
Вычисление разности двумерных массивов. C++
Дано два произвольны двумерных массива A,B с одинаковыми размерностями. Нужно написать функцию нахождения разности их элементов. Сама задача проста но возникает ряд проблем =). 1)Как сделать чтобы...
Одномерные массивы C++
В векторе из 20 элементов переставить элементы так, чтобы сначала располагались все отрицательные элементы, а после этого все другие элементы, без нарушения порядка их следования. Даже не знаю с...
C++ Системные требования http://www.cyberforum.ru/cpp-beginners/thread25150.html
В условии задачи есть ограничение: 20 секунд на тест (компьютер класса Celeron-315, 1 Gb RAM) Как узнать, сколько программа использует памяти, и вообще, какие для какой-нибудь программы должны быть...
C++ Ошибки при компиляции в ТС 3.0 День добрый. Возникла такая проблема. Создается проект на Turbo C 3.0. В проект включается много отдельных файлов, как *.C, так и внешних библиотек (*.lib). В некоторых файлах происходит... подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
07.03.2009, 00:51
По типу переменной и определяется. У тебя же компилятор, а не ассемблер. Он еще на стадии компиляции посмотрит типы, запишет, какая функция будет вызвана. Так что, не думай, что все это динамически в памяти происходит в твоем примере.
В итоге, программа выглядит просто:
Assembler
1
2
3
4
5
0x8048719 <main+25>:    call   0x8048790 <_ZN3CatC1Ev> ;вызов конструктора
0x804871e <main+30>:    lea    -0x14(%ebp),%eax
0x8048721 <main+33>:    mov    %eax,(%esp)
0x8048724 <main+36>:    call   0x80487a4 <_ZN3CatcviEv> ;вызов функции int()
0x8048729 <main+41>:    mov    %eax,-0x10(%ebp) ;результат в переменную
Ничего сверхъестественного. Компилер увидел тип твоей переменной и сам подставил вызов функции.
В случае с char, результат, наверное, зависит от компилятора и опций компиляции. char ведь то же самое число в памяти. В моем случае была вызвана та же функция int(), был взят младший байт числа и записан в переменную char. Число 192 легко помещается в 1 байт, поэтому в итоге мы имеем символ с кодом 192.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.