#include <stdio.h>
inline bool mult(int a, int b, int *c)
{
*c=a*b;
_asm
{
jo FAIL
}
return true;
FAIL: return false;
}
int main(void)
{
int a, b, c;
while(scanf("%d %d", &a, &b) == 2)
printf("%d - %s\n", c, mult(a,b,&c)?"Ok":"Fail");
return 0;
}
NashRus писал(а):Какой класс в СИ.
FireFenix писал(а):Может человек обобщённо назвал Си... не сказано что на чистом
VBTerminator писал(а):Qwertiy, большое спасибо!
BOOL Mul( WORD var1, WORD var2 )
{
WORD result;
DWORD tmp;
result = a * b;
tmp = (DWORD)a * (DWORD)b
if( result == tmp )
{
//Всё нормально
}
else
{
//Внимание: переполнение
}
}
#include <stdio.h>
inline int mult(unsigned short a, unsigned short b, unsigned short *c)
{
unsigned res = a*b;
return (*c=res)==res;
}
int main(void)
{
unsigned short a, b, c;
while(scanf("%hu %hu", &a, &b) == 2)
printf("%hu - %s\n", c, mult(a,b,&c)?"Ok":"Fail");
return 0;
}
Хакер писал(а):А ничего, что код не платформонезависимый?
Qwertiy писал(а):Поподробнее можно?
Хакер писал(а):Используется x86-ассемблер.
Хакер писал(а):Хочешь от меня список аппаратных архитектур, где нет инструкции jo в значении jump-if-overflow?
bool mult(...)
{
#if defined(_X86_)
// Реализация для x86
#elif defined(_arch2_macro_)
// Реализация для 2-ой архитектуры
#elif defined(_arch3_macro_)
// Реализация для 3-ей архитектуры
....
#else
// Универсальная реализация
#endif
}
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2