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

Работа функции qsort - объяснить работу функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дерево структур "семья" - Найти и вывести имя младшего ребенка у Иванова И. И http://www.cyberforum.ru/cpp-beginners/thread1228840.html
Здравствуйте. Помогите, пожалуйста. У меня возникли проблемы. Вот задание: Описать массив записей "семья". -------------------------------------------------------------- Отец ! Мать ...
C++ Std::thread, создать указатель на член класса Есть класс #pragma once #include <map> #include <vector> #include <string> #include <thread> //This class allows to calculate quadratic equation class SquareSolver { public: http://www.cyberforum.ru/cpp-beginners/thread1228832.html
C++ Найти слова в файле, которые больше 10 букв и вывести первое на экран
Помогите понять и решить проблему, пожалуйста. Задача такова: есть файл со словами, необходимо найти слова, которые больше 10 букв и вывести первое на экран. Сделать это нужно с помощью...
SpRecord, SDK - записать номер звонившего абонента C++
При поступлении звонка на экран выводиться номер телефона, как сделать так, чтобы номер записывался сразу на компьютер? Или хотя бы как узнать номер? http://www.sprecord.ru/developers/sdk
C++ Как преобразовать типы данных? http://www.cyberforum.ru/cpp-beginners/thread1228706.html
есть переменные int var1; int var2; int result; я хотел бы не создавать еще 3 переменных типа double, для операции result = var1 / var2; а воспользоваться уже имеющимися типа int. как...
C++ Самоучитель С. Прата Нарисовать треугольник Напишите программу, использующую вложенные циклы, которая запрашивает ввод количества отображаемых строк. Затем она отображает указанное кол-во строк, заполненных звездочками. Причем кол-во звездочек... подробнее

Показать сообщение отдельно
Vtulhu
371 / 377 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
20.07.2014, 17:58
Как же компилятор поймет, как вычитать одно из другого, если он не знает, на что указывает этот указатель? Что там лежит по тому адресу, int или double? Сейчас это указатели "вообще". Поэтому надо сказать компилятору, что arg1 и arg2 - это указатели на int. А значит, надо привести их к типу (int*). Возможно, вот так будет понятнее:

C
1
2
3
4
5
6
7
8
int intcmp(const void* va, const void* vb)
{
    int* pa = (int*)aa;
    int* pb = (int*)bb;
    int a = *pa;
    int b = *pb;
    return ( a < b )? -1 : (a != b);
}
Кстати, возвращать в этой функции разность чисел - большая ошибка. Если a = 2000000000, а b = -2000000000, то на 32-битной платформе произойдет переполнение. a - b = -294967296. Будет такой эффект, как будто a < b.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru