Текущий архив: 2003.03.27;
Скачать: CL | DM;
ВнизОсобенности компилятора - правда или нет ? Найти похожие ветки
← →
Альф (2003-03-12 12:15) [0]Тут у нас спор возник с напарником по поводу одной малюсенькой фишки :(
Я привык писать вот так:
result := (0 = ErrorCount);
^^^^ - константа спереди - мне так понятнее
а он пытается сослаться на какую-то особенность компилятора и говорит так писать нельзя ни в коем случае нужно только так
result := (ErrorCount = 0);
кто прав ?
← →
Альф (2003-03-12 12:17) [1]Повторю историю сообщений:
Игорь Шевченко © (12.03.03 11:40)
Оба
oomneeq © (12.03.03 11:51)
>а он пытается сослаться
ну и как, получается у него? :=)
твой коллега мастер сильных аргументов
или ты мастер пересказа
напишите оба варианта, поставь брекпойнта на
result:=...
и запусти
когда остановится, открой CPU Window
Увидишь как это выглядит в ассемблере и будет вам с напарником
счастие.:)
2app (M) (12.03.03 12:11)
Бывает - понимаю :)))
← →
Альф (2003-03-12 12:17) [2]2oomneeq © (12.03.03 11:51)
В том то и дело что обе конструкции выглядят одинаково:
cmp dword ptr [ebp-$0c], $00
но с одной стороны я верю своим глазам - а с другой напарнику :(
← →
Ketmar (2003-03-12 12:20) [3]>Альф © (12.03.03 12:17)
от перемены идиотов местами степерь идиотизма не уменьшается.
Satanas Nobiscum! 12-Mar-XXXVIII A.S.
← →
MC TOL (2003-03-12 12:26) [4]Альф © (12.03.03 12:17)
>но с одной стороны я верю своим глазам - а с другой напарнику :(
А напарник твоим глазам не верит?
Ketmar © (12.03.03 12:20)
Интересная мысль ;-)
← →
DiamondShark (2003-03-12 12:29) [5]Окно CPU отладчика вас рассудит...
В принципе, код должен быть абсолютно одинаковым.
Но в любом случае ваш коллега на счёт "так писать нельзя ни в коем случае" гонит.
← →
Palladin (2003-03-12 12:32) [6]
> так писать нельзя ни в коем случае
конкретно гонит между прочим...
← →
DiamondShark (2003-03-12 12:35) [7]
> Я привык писать вот так:
>
> result := (0 = ErrorCount);
Что выдаёт человека до мозга костей испорченного сями.
Или, по крайней мере, начитавшегося наставлений "настоящих програмеров".
← →
Альф (2003-03-12 12:35) [8]2Ketmar © (12.03.03 12:20)
Жестко задвинул, блиннн....
← →
han_malign (2003-03-12 12:41) [9]cmp dword ptr [ebp-$0c], $00
а если включена оптимизация
- test EAX,EAX
← →
uw (2003-03-12 13:14) [10]Покажи своему напарнику еще такую строку:
for i := 1to 10 do
(я уже приводил этот пример, он компилируется), скажи ему, что так тебе понятней, и возвращайся обратно в конференцию, обсудим.
← →
Альф (2003-03-12 15:00) [11]2DiamondShark © (12.03.03 12:35)
>до мозга костей испорченного сями
Ну знаете сударь - чем то же надо портиться - и С++ не самое плохое средство - мне действительно так понятнее
2uw © (12.03.03 13:14)
Не понял, причем тутfor i := 1 to 10 do
Если ты о downto - то проходили - знаем :)))
← →
Ketmar (2003-03-12 15:08) [12]>Альф © (12.03.03 15:00)
а зачем портиться? что, без "душка" не канает?
Satanas Nobiscum! 12-Mar-XXXVIII A.S.
← →
uw (2003-03-12 15:26) [13]>Альф © (12.03.03 15:00)
for i := 1to 10 do
^^
← →
DiamondShark (2003-03-12 15:26) [14]
> Ну знаете сударь - чем то же надо портиться - и С++ не самое
> плохое средство - мне действительно так понятнее
А откуда такая привычка произрастает в курсе?
← →
Альф (2003-03-12 15:32) [15]2DiamondShark © (12.03.03 15:26)
Не в курсе - объясни
2Ketmar © (12.03.03 15:08)
Неее - не канает
← →
Игорь Шевченко (2003-03-12 15:33) [16]
> Что выдаёт человека до мозга костей испорченного сями.
Язык С тут не при чем. Это MS в своих примерах такие слова пишет. На VB у них тоже самое.
← →
Ketmar (2003-03-12 15:42) [17]>Игорь Шевченко © (12.03.03 15:33)
ну так они тоже "единым и неделимым" попорчены.
Satanas Nobiscum! 12-Mar-XXXVIII A.S.
← →
Игорь Шевченко (2003-03-12 15:48) [18]Ketmar © (12.03.03 15:42)
> "единым и неделимым"
Уж не СССР ли имеется в виду ? :-)
← →
DiamondShark (2003-03-12 15:57) [19]
> Альф © (12.03.03 15:32)
Объясняю.
Дело в том, что сишники заметили, что постоянно лажаются с операциями=
и==
, например так:
if (Result = NOERROR)
Говоришь, сам дурак? Не спорю. Сам иногда:=
и=
путаю. Дело не в этом, все делают опечатки и глупости, таков человек.
Дело в том, что в С все операторы в качестве побочного эффекта имеют значение. Т.е. операция X=Y кроме изменения значения X является ещё и корректным rvalue.
Поэтому компилер благополучно переварит оператор
if (Result = NOERROR)
огрызнувшись, возможно, варнингом. Но кто эти варнинги читает? (недавно сильно хохотал над новостями рабочей группы Yaffil: "Такого-то числа. Общее количество варнингов снижено до 300". Достижение! мать его.)
И вот придумали они (всё-таки настоящие мужчины как-никак, хотя и не ищут лёгких путей) эдакое соглашение по кодингу: в операции сравнения слева писать константу. Это чтобы если уж и перепутаешь==
и=
, то хоть от компилера откровенно по рукам получишь, а не ограничишся стыдливым варнингом, который затеряется в трёх сотнях других.
> Игорь Шевченко © (12.03.03 15:33)
> Язык С тут не при чем. Это MS в своих примерах такие слова
> пишет. На VB у них тоже самое.
Ну, я, кажется, уже всё сказал.
А вот на VB таким извратом пользоваться -- уже маразм. Иначе как желанием сохранить единство стиля не объяснить.
← →
uw (2003-03-12 16:20) [20]>DiamondShark © (12.03.03 15:57)
А мысль и в самом деле толковая! Свои предыдущие посты дезавуирую.
← →
Ketmar (2003-03-12 16:29) [21]>uw © (12.03.03 16:20)
толковая мысль не там. толковая мысль "а сменю ка я этот идиотский цэ на что-то более удобное" должна осенить опосля прочтения поста.
Satanas Nobiscum! 12-Mar-XXXVIII A.S.
← →
uw (2003-03-12 16:34) [22]>Ketmar © (12.03.03 16:29)
Да це-то у меня для микроконтроллеров.
← →
Игорь Шевченко (2003-03-12 16:37) [23]
> "а сменю ка я этот идиотский цэ на что-то более удобное"
>
На C++ к примеру.
← →
DiamondShark (2003-03-12 17:07) [24]
> Игорь Шевченко © (12.03.03 16:37)
> На C++ к примеру.
Хрен редьки не слаще.
А для микроконтроллеров ещё и слишком громоздкий.
Эх...(мечтательно) А вот писал я как-то для однокристаллок на Модуле-2...
Ммм... Магги...
← →
Игорь Шевченко (2003-03-12 17:08) [25]DiamondShark © (12.03.03 17:07)
Слаще :-)))
Страницы: 1 вся ветка
Текущий архив: 2003.03.27;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.013 c