1. C# / Говнокод #3930

    +104

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int x = 1, z = ++x + x;
    Console.WriteLine (x.ToString () + "  " + z.ToString ());
    x = 1;
    int z1 = x + ++x;
    Console.WriteLine (x.ToString ()  + "  " + z1.ToString ());

    Вот такой код

    Запостил: Ebaw, 10 Августа 2010

    Комментарии (18) RSS

    • и что тут за ГК?:
      - банальный тест, как будет происходить выполнение
      Ответить
    • Оказывается от перестановки слагаемых сумма меняется.

      Кстати а что такой код выведет в Жаве?
      Ответить
      • public class Test {
          public static void main(String[] args) {
            int x = 1, z = ++x + x;
            System.out.println(x + "  " + z);
            x = 1;
            int z1 = x + ++x;
            System.out.println(x + "  " + z1);
          }
        }


        2 4
        2 3

        как ни странно
        Ответить
        • Что тут странного?) В первом случае увеличивается ++x(2), а затем прибавляется x(который уже равен 2)
          Во втором случае к x(1) прибавляется ++x(2)
          Ответить
          • все зависит от приоритета операций
            Ответить
            • ...и от порядка чтения (при равном приоритете)
              для разный трансляторов порядок чтения может быть разный: лтр и ртл

              на данном примере:
              могло быть: "2 4", "2 3" или "2 3", "2 4"
              Ответить
          • а в Жаве инт разве не реализован как объект?
            во втором случае изменив объект по ссылке первое слагаемое тоже должно меняться.

            В Шарпе у меня это выглядело так
            class Program
            	{
            		static void Main(string[] args)
            		{
            			int x = 1, z = ++x + x;
            			Console.WriteLine(x.ToString() + "  " + z.ToString());
            			x = 1;
            			
            			int z1 = x + ++x;
            			Console.WriteLine(x.ToString() + "  " + z1.ToString());
            
            			Integer xObj = new Integer(1);
            			Integer z2 = xObj + ++xObj;
            			Console.WriteLine(x.ToString() + "  " + z2.ToString());
            		}
            	}
            	class Integer
            	{
            		private int value;
            		public Integer(int value)
            		{
            			this.value = value;
            		}
            
            		public static Integer operator + (Integer x, Integer y )
            		{
            			return new Integer(x.value + y.value );
            		}
            
            		public static Integer operator ++(Integer x)
            		{
            			x.value++;
            			return x;
            		}
            
            		public override string ToString()
            		{
            			return value.ToString();
            		}
            	}
            Ответить
      • >>>Кстати а что такой код выведет в Жаве?
        то же что и в шарпе и жабаскрипте

        2 Ebaw - тут таким никого не удивишь, разве что нубов, ибо уже обсуждалось
        http://govnokod.ru/3535

        правда тот код доставлял в отличие от этого тестового уныльства
        Ответить
    • Мутабельная Петушня и Сношение с Дилдой: Часть 2
      Ответить
    • И когда все дауны наконец-то услышат о существовании приоритета операций.
      Ответить
      • ага. УебКилл, который рассказывал что "это как-то нелогично" слился - нарисовались другие...
        Ответить
      • Автор данного кода, судя по всему, услышал, раз тестить начал :)
        Ответить
        • Это не мой код
          Ответить
          • зато знаний у тебя меньше чем у автора кода

            гоу в школу
            Ответить
          • Я и не говорю, что Вы, я говорю - автор кода)
            Ответить
            • однако, показательно. такие комменты, как кто-то уже замечал, как лакмусовая бумажка. Скажешь "дурак", так и набегут дураки "да ты кого дураком назвал???"

              а еще Ахматова говорила, "если на улице кричат: дурак!, необязательно оглядываться"
              Ответить
    • Стоило на несколько дней отлучиться от сайта, как наговнокодили.
      Смотрите:
      http://govnokod.ru/3535
      http://lurkmore.ru/++i_+_++i
      Ответить

    Добавить комментарий