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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.87
Inferiym
1 / 7 / 3
Регистрация: 20.12.2011
Сообщений: 58
#1

С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? - C++

17.06.2012, 23:23. Просмотров 3882. Ответов 54
Метки нет (Все метки)

Просветите убогого =)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2012, 23:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос С + + и Visual C + + и чем они отличаются? Есть ли их изучение взаимно дополняющее или это совсем разные языки? (C++):

Сложить три числа, если они отличаются не больше чем на 2 - C++
Есть к примеру 3 числа, A, B, C. Если эти числа отличаются не больше чем на 2, то сложить их. Как бы сделать проверку?

Какие существуют виды условного оператора и чем они отличаются - C++
5. Какие существуют виды условного оператора и чем они отличаются?

Часть чисел записывается с совсем противоположным знаком, чем они выводятся в консоли - C++
Есть следующий код: #include <iostream> #include <math.h> #include <fstream> using namespace std; void filter(double x,double...

а как вам это чем отличаются - C++
10)Литералы 33 и 33L Выберите один ответ. не отличаются отличаются значением отличаются типом одно из них...

Числа считаются равными если они отличаются не более, чем на (10^-12) / c++ / как реализовать эту возможность? - C++
На плоскости заданы три точки А, В и С. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести расстояние от...

JavaScript является каким то подразделом Java, или это совершенно разные языки? - Java
Здравствуйте. Хочу изучит JavaScript, но не хотелось бы обходить вниманием Java. Подскажите, JavaScript является каким то подразделом...

54
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,832
Записей в блоге: 28
25.06.2012, 01:07 #31
Цитата Сообщение от Evg Посмотреть сообщение
А есть идеи о причинах?
Кажется, понял. В точке вызова будет создан объект, отвечающий за параметр. Но внутри функции объект уже нельзя корректно уничтожить, т.к. функция об этом объекте ничего не знает
2
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.06.2012, 01:12 #32
Цитата Сообщение от DaskOFF Посмотреть сообщение
Каким же компилятором лучше пользоваться новичку, чтобы в будущем не было много проблем с тем, что в одном компиляторе что-то было в другом нету
если не сложно вариант платной(если таковая имеется) и бесплатно
Любым, просто документацией нужно пользоватся не специфичной для компилятора, и тогда пробем не должно быть.
Цитата Сообщение от Evg Посмотреть сообщение
Кажется, понял. В точке вызова будет создан объект, отвечающий за параметр. Но внутри функции объект уже нельзя корректно уничтожить, т.к. функция об этом объекте ничего не знает
Не понятно, не зря же есть va_end, который и так должен подчищать все что нужно перед возвратом.
1
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,832
Записей в блоге: 28
25.06.2012, 01:16 #33
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Не понятно, не зря же есть va_end, который и так должен подчищать все что нужно перед возвратом.
va_end как бы подчищает стек (т.е. плоскую память), хотя я ещё ни разу не видел реализации, где va_end был чем-то, отличным от пустышки

Здесь проблема не в чистке, а в вызове деструкторов. В точке вызова va_end уже нет никакой информации о том, каких классов и сколько объектов было положено в стек в точке вызова
1
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.06.2012, 01:24 #34
Цитата Сообщение от Evg Посмотреть сообщение
va_end как бы подчищает стек (т.е. плоскую память), хотя я ещё ни разу не видел реализации, где va_end был чем-то, отличным от пустышки
Здесь проблема не в чистке, а в вызове деструкторов. В точке вызова va_end уже нет никакой информации о том, каких классов и сколько объектов было положено в стек в точке вызова
Да, пожалуй, ты прав.
1
DaskOFF
25.06.2012, 01:30
  #35

Не по теме:

Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Любым, просто документацией нужно пользоватся не специфичной для компилятора, и тогда пробем не должно быть.
получается от компилятора не зависит на каких машинах программа будет работать или нет
все зависит от кода ?

1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
25.06.2012, 10:13 #36
В C++0x есть изменения по пункту 5.2.2.7

When there is no parameter for a given argument, the argument is passed in such a way that the receiving function can obtain the value of the argument by invoking va_arg (18.10). [ Note: This paragraph does not
apply to arguments passed to a function parameter pack. Function parameter packs are expanded during
template instantiation (14.5.3), thus each such argument has a corresponding parameter when a function
template specialization is actually called. — end note ] The lvalue-to-rvalue (4.1), array-to-pointer (4.2), and
function-to-pointer (4.3) standard conversions are performed on the argument expression. An argument that
has (possibly cv-qualified) type std::nullptr_t is converted to type void* (4.10). After these conversions,
if the argument does not have arithmetic, enumeration, pointer, pointer to member, or class type, the
program is ill-formed. Passing a potentially-evaluated argument of class type (Clause 9) having a non-
trivial copy constructor, a non-trivial move constructor, or a non-trivial destructor, with no corresponding
parameter, is conditionally-supported with implementation-defined semantics.
If the argument has integral
or enumeration type that is subject to the integral promotions (4.5), or a floating point type that is subject
to the floating point promotion (4.6), the value of the argument is converted to the promoted type before
the call. These promotions are referred to as the default argument promotions.
Так что студия имеет на это право (если говорить о студии 2010 и выше).
1
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.06.2012, 20:52 #37
Цитата Сообщение от ForEveR Посмотреть сообщение
Так что студия имеет на это право (если говорить о студии 2010 и выше).
Имеет право поддерживать передачу POD через эллипсис, но вот печатать std::string через %s уж точно нет.
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
25.06.2012, 20:58 #38
CyBOSSeR, Да, по идее не имеет. Причина.
http://stackoverflow.com/questions/1...-visual-studio
1
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,832
Записей в блоге: 28
26.06.2012, 10:20 #39
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Имеет право поддерживать передачу POD через эллипсис, но вот печатать std::string через %s уж точно нет.
Цитата Сообщение от ForEveR Посмотреть сообщение
CyBOSSeR, Да, по идее не имеет. Причина.
http://stackoverflow.com/questions/1...-visual-studio
В общем-то то же самое, что я и говорил - просто звёзды встали соответствующим образом. Следующий код некорректен, но на intel'овских компиляторах будет работать:

C
#include <stdio.h>
 
/* Как бы MSVC'ная реализация std::string */
struct string
{
  char *s;
};
 
int main (void)
{
  struct string str;
  str.s = "abc";
  printf ("%s\n", str);
  return 0;
}
2
Avazart
Эксперт С++
7237 / 5433 / 304
Регистрация: 10.12.2010
Сообщений: 24,154
Записей в блоге: 17
26.06.2012, 11:50 #40
В смысле будет корректный вывод или просто будет компилиться?
1
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,832
Записей в блоге: 28
26.06.2012, 11:57 #41
Цитата Сообщение от Avazart Посмотреть сообщение
В смысле будет корректный вывод или просто будет компилиться?
На intel'е в 32-битном режиме будет корректный вывод (причём стабильный). На sparc v9, например, работать не будет, т.к. под ихние программные соглашения в данном примере звёзды в правильной ориентации не встанут
1
Avazart
Эксперт С++
7237 / 5433 / 304
Регистрация: 10.12.2010
Сообщений: 24,154
Записей в блоге: 17
26.06.2012, 13:01 #42
Ну так этот же код работает и на VC и Builder, но стоит изменить на
C++
1
2
3
4
5
struct string
{
  int n;
  char *s;
};
И VC выдает ошибку, а Builder игнорит вывод.
1
Evg
Эксперт CАвтор FAQ
18377 / 6424 / 441
Регистрация: 30.03.2009
Сообщений: 17,832
Записей в блоге: 28
26.06.2012, 13:12 #43
Ну дык я и говорю о том, что звёзды встали нужным образом. printf ожидал достать из списка неименованных аргументов указатель на строку. Но в данном участке памяти лежала структура, по счастливой случайности у которой первое поле представляло собой указатель на строку. Поскольку в памяти нет никаких границ между объектами, а лежат просто данные, то printf прочитал из нужного места стека 4 байта, трактовал их как указатель на строку и случилось чудо
1
nanex
22 / 16 / 2
Регистрация: 15.10.2011
Сообщений: 305
26.06.2012, 13:50 #44
Цитата Сообщение от silent_1991 Посмотреть сообщение
Avazart,у мелкомягких и стандартный-то С++-компилятор стандарт порой нехило нарушает, что уж говорить об их собственной "доработке" языка...
Так все-таки где конкретика НЕХИЛОГО нарушения стандартов, и чем он в этом плане хуже других был. Заявить что-то и сказать, что не требуйте доказательств... Вы же не Бог, упаси меня Господь.
1
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
26.06.2012, 16:11 #45
nanex, конкретика была ниже, на счёт неверного разрешения перегрузки функций. Также на этом форуме обсуждались и более глубокие вещи, с которыми редко, но можно столкнуться (хотя я уже не помню, какие именно, но их хватило, чтобы я оставил этот компилятор). Хочется также сказать, что я не агитирую против использования мелкомягкого компилятора, так что не вижу смысла в подобных наездах.
1
26.06.2012, 16:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2012, 16:11
Привет! Вот еще темы с ответами:

Чем они отличаются.. - Turbo Pascal
Помогите с файлами! F:file of string; F1:file of char; F2:text; Нужно написать чем они отличаются. А также файловое...

Чем они отличаются и какую приобрести? - Видеокарты
Чем отличается Видеокарта ASUS STRIX GeForce GTX 750 Ti OC 2GB GDDR5 (STRIX-GTX750TI-OC-2GD5) от Видеокарта ASUS GeForce GTX 750 Ti OC...

Visual Studio 2005 и Visual Studio 2008 сильно ли они отличаются друк от друга? - Разработка ПО
привет ребята:) вот у меня есть Visual Studio 2005 и Visual Studio 2008 возник вопрос сильно ли они отличаются друк от друга? пробывал...

Что такое входной и выходной поток? чем они отличаются? - C#
Что такое входной и выходной поток? чем они отличаются?


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

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

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