Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414

Как работает функция "test" в приведенном коде

14.01.2014, 16:14. Показов 3368. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните как работает функция test

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <conio.h>
#include <iostream.h>
#include <limits.h>
 
int     test(long int a)
     {return ((a>>15)+1)&~1;}
 
int     primC(int a, const int b, const int c, const int d)
{ double z = (2.0*a+1.0*b*c)/(d-a);  //!!!!!!!!!! ВНИМАНИЕ !!!!!!!!!!!!!!!!!
  if (z > SHRT_MIN && z < SHRT_MAX) return z;
   else
    { cout << "\n!!!!!!!!!!! Limits of int value !!!!!!!!!!!\n  x = "
           << z << endl;
      return SHRT_MIN; //-32768
     }
 }
 
int X,a;
 
void main(void)
{   char ch;
    const b=-333;
    const c= 1000;
    const d=-10;
    long int a1;
    do {X = 0;
        cout << "\n    x=(2*a+b*c)/(d-a);  int x,a,b=-333,c=1000,d=-10;" << endl;
        do{ cout<<"\n    Enter a [-32768..32767], a!= " << d << " ====> ";
            cin>> a1;
           }while (test(a1) || d - a1 == 0 || test (d-a1));
        a = a1;
        X = primC(a, b, c, d);
        if (X!=SHRT_MIN)
         { cout << " Result (C++) x = " << X << endl;
          }
        cout << "\n\nExit? - (y/n)\n";
        ch = getch();
       } while (!(ch=='y' || ch =='Y'));
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2014, 16:14
Ответы с готовыми решениями:

Как в приведенном коде реализована функция копирования
using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.IO; using...

Как в приведенном коде работает malloc?
#include &lt;stdio.h&gt; #include &lt;memory.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;math.h&gt; const int MAX= 10000001; int...

Как работает делегат в приведенном коде
Добрый день, объясните пожалуйста как здесь работает делегат и зачем он вообще здесь нужен? // Инициализация делегата ...

27
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
15.01.2014, 02:08
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Этот код под 16 бит, а не 32
По стандарту, ничто не гарантирует, что int или short int и т.д. (не считая char и unsigned char) занимает какое-то определенное кол-во памяти.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
15.01.2014, 02:31
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Этот код под 16 бит, а не 32
а где это было указано?
теперь смотрим
максимальное положительное число для 2 байт
32767 0х7FFF
>>15=0
(0+1)&0xFFFE=0
минимальное отрицательное
-32768 0x8000
>>15=0xFFFF
0xFFFF+1=0 &0xFFFE=0
в результате функция всегда возвращает 0

единственно что я могу предположить что функция возвращает не 0 если число отрицательное
но тогда в прототипе должно быть
C++
1
int     test(unsigned long int a)
тогда
0x8000
>>15=0x0001
0x0001+1=2 &0xFFFE=2
0
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414
15.01.2014, 02:41  [ТС]
а где это было указано?
Тут по коду понятно
C++
1
2
int     primC(int a, const int b, const int c, const int d)
      return SHRT_MIN; //-32768
int 16-ти битное
0
15.01.2014, 02:44

Не по теме:

Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Тут по коду понятно
да по этому коду, много что понятно

0
2 / 2 / 1
Регистрация: 28.08.2013
Сообщений: 414
15.01.2014, 19:30  [ТС]
минимальное отрицательное
-32768 0x8000
>>15=0xFFFF
Не пойму, почему тут 0xFFFF, а не 0x0001
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
15.01.2014, 19:54
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Не пойму, почему тут 0xFFFF, а не 0x0001
потому что сдвиг вправо отличается для знаковых и беззнаковых типов
при сдвиге беззнаковых в левый разряд записывается 0
а при сдвиге знаковых в левый разряд записывается копия знакового бита(левого разряда)
так при сдвиге безнаковых
0x8000(1000 0000 0000 0000)>>1=0x4000(0100 0000 0000 0000)
а так при сдвиге знаковых
0x8000(1000 0000 0000 0000)>>1=0xC000(1100 0000 0000 0000)
чтобы было понятней
-32768(0x8000)/2=-16384(0xC000)
32768(0x8000)/2=16384(0x4000)
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
15.01.2014, 19:58
Цитата Сообщение от MrGluck Посмотреть сообщение
Элементарно:
здесь её нет
читай:
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
int * * test(long int a)
* * *{return ((a>>15)+1)&~1;}
.
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Объясните как работает функция test
А прочитать ни как? Всего то сдвиг параметра на 15 бит, потом арифметическое сложение результата с единицей, к сумме побитно применяется И c числом, все биты которого противоположны битам единицы в разрядности long int.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
15.01.2014, 21:42
Цитата Сообщение от taras atavin Посмотреть сообщение
читай:
читай
Цитата Сообщение от MrGluck Посмотреть сообщение
wolf1396, ТС изначально скинула файл на форум, где функция test называлась по другому. Когда я сделал замечание - она исправила код (можно в течении 5 минут после публикации) и зачем то (!!!) еще и написала мне что мол я просто так придираюсь. А я, как писал уже выше, даже через поиск Ctrl + F проверил наличие сией функции.
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
просто я когда написала код, смотрю, имя функции не test, а temp и подправила и даже не предала этому значения вообще, потому что temp функция была где то секунд 30
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2014, 21:42

Как работает генерация случайных чисел в приведенном коде
Дорогие Форумчане! Подскажите пожалуйста, как работает нижеследующий код для генерации случайных чисел: random=rand()%(b+1-a)+a; ...

Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего сервера.
Столкнулся с интересной проблеммой. Функция file_exists(test/01.ogg) работает, если папка test находится в корневом каталоге моего...

Разделит ли функция div ah на bh в приведенном коде
xor ah,ah xor bh,bh xor ch,ch mov ax,p shr ax,2 mov bx,q shl bx,1 add ax,bx inc ax xor bx,bx

Почему в приведенном коде не вызывается функция
Здравствуйте, Функция LoadImg не вызывается, хотя компилятор ни на что не ругается... public Texture2D test; public string...

Не правильно работает if в приведенном коде
Есть функция которая считает начало слова в строке(a - массив строк, b - массив разделителей).Столкнулся с проблемой что не смотря на то...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой Зрите в корень - монополизация на разработку программ. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru