![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 05.02.2012
Сообщений: 11
|
![]()
Эта функция почему-то неправильно считает сумму. Выдает результат (-156413698). Не знаю как правильно ее написать. Подскажите
Код:
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 15.11.2008
Сообщений: 577
|
![]()
блин, а я даже подумать не мог что так можно. Действительно с + + сложный язык.
Тем не менее полазив по гуглу я понял что первый параметр должен быть количество аргументов. А ваша программа должна выглядеть примерно так Код:
Последний раз редактировалось rUs_LAN; 09.02.2012 в 16:37. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.02.2012
Сообщений: 11
|
![]()
Спасибо большое за помощь rUs_LAN. А то я думал-думал. Теперь хоть все стало понятно.
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 05.02.2012
Сообщений: 11
|
![]()
Вот так тоже можно. Это даже понятнее получается
Код:
Последний раз редактировалось lotus1994; 09.02.2012 в 16:52. |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 15.11.2008
Сообщений: 577
|
![]()
А мне вот по большому счету ничего не понятно.
Как правильно и где это надо использовать жду комментариев Сыроежки ![]() |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
![]()
Правильно конечно использовать стандартные средства, то есть включить заголовок <cstdarg> и применять соответствующие макро va_start, va_arg, va_end и т.д.
Так как предложенное решение Код:
Также применение нестандартных средств затрудняет чтение кода, так как надо разбираться, а что пытается сделать программист.
Со мной можно встретиться на www.clipper.borda.ru
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 15.11.2008
Сообщений: 577
|
![]()
спасибо!!!
|
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Вообще-то, как раз в этом случае работать будет, но по чистой случайности, так как int на 32-битных машинах соответствует машинному слову и выравниванию, с которым данные кладутся в стек. Если объявить count, например, как short, то уже работать ничего не должно. Более того, если скомпилировать под Win64, тоже работать не должно. И кстати, на линуксе (или там freebsd?) тоже не работает, не смотря на 32-х битность. Так что, использование stdarg.h не прихоть, а необходимость.
Последний раз редактировалось netrino; 09.02.2012 в 20:41. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 15.11.2008
Сообщений: 577
|
![]() Код:
add: ну работает но не совсем работает, мой код скорее всего написан с ошибками, у меня в 1 аргумент (количество параметров) написано 6, хотя в действительности я так понимаю должно быть 5. Если написать 5 последний параметр не воспринимается, это происходит из-за того, что есть тип (long long) подозреваю что из-за того что он занимает 8 байт а не 4. Далее копаться не стал. Последний раз редактировалось rUs_LAN; 09.02.2012 в 21:49. |
![]() |
![]() |
![]() |
#10 | |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
![]() Цитата:
Попробуйте заменить вызов функции на следующий sum(6, 20, 'a', 'b', 40ll, 1, 10ll ) Посмотрим, что будет. Да, и считайте не сумму, а просто выведите их на печать. Так как в сумме есть особенность. Например, если есть тип long long, то он может быть разбит на два типа int, в котором одна часть будет равна 0, а вторая часть тому значению, которое вы передали. Поэтому при суммировании получится верное значение: сложатся две части одного числа, одна из которых (старшая часть) равна 0.
Со мной можно встретиться на www.clipper.borda.ru
Последний раз редактировалось Сыроежка; 09.02.2012 в 21:42. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Варнинги в функциях с переменным числом параметров | guz | Общие вопросы C/C++ | 0 | 15.11.2010 13:36 |
функция с переменным числом параметров | Veselyn | Общие вопросы C/C++ | 1 | 08.04.2010 16:36 |
Функция с переменным числом параметров С++ | [CODER] | Помощь студентам | 3 | 22.03.2010 03:58 |
Функции с переменным числом параметров | Matr1x | Общие вопросы C/C++ | 2 | 07.01.2010 16:55 |
Процедуры с переменным числом параметров Pascal | Сергей089 | Помощь студентам | 2 | 04.04.2009 19:47 |