LINUX.ORG.RU

История изменений

Исправление splinter, (текущая версия) :

Илик примеру, мне необходимо вернуть результат деления если число положительное, в Си я это сделаю одним макросом:

#define isFALSE -1
#define retDivPositive(a,b,ret) (a > 0) & (b > 0)  ? (ret = (a/b)) : (ret = isFALSE);
    retDivPositive(4,2,a);
    retDivPositive(0.888, 2.001, b);
    retDivPositive(3, 0.3, c);
    printf("a = %d, b = %f c = %e",a,b,c);

a = 2, b = 0.443778 c = 1.000000e+01  


В Ada я бы запарился приводить к типам.

Исходная версия splinter, :

Илик примеру, мне необходимо вернуть результат деления если число положительное, в Си я это сделаю одним макросом:

#define retDivPositive(a,b,ret) (a > 0) & (b > 0)  ? (ret = (a/b)) : (ret = isFALSE);
    retDivPositive(4,2,a);
    retDivPositive(0.888, 2.001, b);
    retDivPositive(3, 0.3, c);
    printf("a = %d, b = %f c = %e",a,b,c);

a = 2, b = 0.443778 c = 1.000000e+01  


В Ada я бы запарился приводить к типам.