Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.012 c
14-88208
Мыш
2003-03-10 06:33
2003.03.27
Отладчик


14-88210
Феликс
2003-03-11 17:47
2003.03.27
Если бы у вас вдруг появился халявный инет вы бы что делали?


7-88265
SN
2003-01-30 22:30
2003.03.27
ПРОБЛЕМА С XP


1-88038
asafr
2003-03-13 18:29
2003.03.27
COM сервера MS Office,


14-88187
Diamond
2003-03-11 01:41
2003.03.27
Как правильно нумеровать версию программы???