singlepost

головоломка << На главную или назад  

if (a==a)
{

}

как сделать, что бы условие не выполнилось???

вариант типа

if (1==0)
if (a==a)
{

}

не пойдет ;)

57 ответов в теме “головоломка”

  1. 30
    Александр Ерома ответил:

    забыл сказать – это на С++

  2. 29
    Кирилл Быков ответил:

    Я тоже подумал про NaN. Причём это решение универсальное, не зависящее от языка.

  3. 28
    Жека Кирпичев ответил:

    А чего подробнее-то, скомпилируй да запусти :)

    //java.sun.com/docs/books/jls/third_edition/htm...
    Floating-point equality testing is performed in accordance with the rules of the IEEE 754 standard:

    * If either operand is NaN, then the result of == is false but the result of != is true. Indeed, the test x!=x is true if and only if the value of x is NaN. (The methods Float.isNaN and Double.isNaN may also be used to test whether a value is NaN.)

  4. 27
    Egor Zvigunov ответил:

    Можно подробнее про это, я что-то не слышал о таком

  5. 26
    Жека Кирпичев ответил:

    >Если а – тип типа int, char и т.д.

    Егор, повторяю:

    double a = Double.NaN;
    if(a==a) System.out.println("Not gonna see this message, buddy!");
    else System.out.println("Two NaN's are never considered equal");

  6. 25
    Ростислав Чутков ответил:

    Это разные буквы, русская и латинская. вообще жесть, что джава позволяет по-русски иденты называть, мрак.

  7. 24
    Алексей Ананьев ответил:

    int a = 10;
    int а = 2;
    По-моему правильно так:
    int a = 10;
    а = 2;
    Или я ошибаюсь?

  8. 23
    Egor Zvigunov ответил:

    хотя в рамках джавы я не вижу путей решения. Если а – тип типа int, char и т.д. то значение будет одинаковым, если же это объект, то адрес также одинаковый, а так как перегружать операторы в джаве не можем, посему думаеться что решить врядли удасться

  9. 22
    Egor Zvigunov ответил:

    Жека jkff Кирпичев – условие выполнено, ничего не нарушаеться

  10. 21
    Жека Кирпичев ответил:

    Хитро :)

  11. 20
    Egor Zvigunov ответил:

    Вы не поверите, но на яве это выводит Not equals

    public class Testing {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int a = 10;
    int а = 2;
    if(a==а)
    System.out.println("equals");
    else
    System.out.println("Not equals.");
    }

    }

  12. 19
    Egor Zvigunov ответил:

    я думаю задача в рамках плюсов решена?

  13. 18
    Ростислав Чутков ответил:

    блин, а ведь и правда.

    static int __t = 0;

    #define a (++__t)

  14. 17
    Egor Zvigunov ответил:

    а можно типа
    #define a rand()

  15. 16
    Молекулярка Ляля ответил:

    //vkontakte.ru/board.php?act=topic&tid=6492080
    тут все давно разобрано было =)

  16. 15
    Павел Потапов ответил:

    Да и с криво написанным оператором == тож может быть. ;)

  17. 14
    Жека Кирпичев ответил:

    Не, решение с NaN вполне себе со смыслом – это реально может неявно встретиться в коде и довести до белого каления.

  18. 13
    Dele Ted ответил:

    нужно найти чела, который этоу головоломку придумал и у него, в конце концов, узнать

  19. 12
    Павел Тотолин ответил:

    Головоломки без смысла.. =\

  20. 11
    Ростислав Чутков ответил:

    Баянище. только что было в группе программисты C++

    вообще это классическая сишная задача на макросы и приоритеты операций
    например
    #definea0&&0

  21. 10
    Жека Кирпичев ответил:

    В Java нельзя перегружать операторы.

    Вот не извращенный пример: В Java например условие не выполнится, если a имеет тип double и равно NaN.

  22. 9
    Жека Кирпичев ответил:

    А, Алексей Гридин уже сказал..

  23. 8
    Алексей Самулеенков ответил:

    Собственно код:

    class MyType
    {
    public MyType()
    {
    }

    public static bool operator ==(MyType x, MyType y)
    {
    return (false);
    }

    public static bool operator !=(MyType x, MyType y)
    {
    return (false);
    }
    }

    class Program
    {
    static void Main(string[] args)
    {
    MyType a = new MyType();
    if (a == a)
    {
    Console.WriteLine("True");
    }
    else
    {
    Console.WriteLine("False");
    }
    }
    }

  24. 7
    Egor Zvigunov ответил:

    Alexey AGUtilities Gorshkov
    +1

  25. 6
    Алексей Самулеенков ответил:

    Если это C++, C# или Java, то можно перегрузить оператор ==.

  26. 5
    Dele Ted ответил:

    if (!(a==a))
    {

    }

  27. 4
    Дэ По ответил:

    ну дык попробуй

  28. 3
    Володимир Воробей ответил:

    А какой язык?

  29. 2
    Виктор Григорьев ответил:

    вопрос именно в значении самого а?
    какой-нибудь #define a rand() не прокатит?

  30. 1
    Алексей Гридин ответил:

    Вставить return перед оператором и этот оператор станет недостижимым кодом. Ещё варианты вызвать исключение, метку вставить с goto. Если это джава и можно менять а, тогда сделать его нечислом (опять таки если это число). Самое простое закоментить.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.