Главная страница
    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.5 MB
Время: 0.009 c
1-87889
Makking
2003-03-15 16:40
2003.03.27
Как сохранить изображение из TImage в монохромном формате?


6-88114
Cosmic
2003-02-05 07:50
2003.03.27
А как отключить порт?


7-88268
S.P.I.R.I.T
2003-02-03 19:27
2003.03.27
клавиатура и мышка


1-87968
arturik
2003-03-17 22:59
2003.03.27
Как найти в Delphi6 статистические функции?


14-88247
Suharew
2003-03-11 18:47
2003.03.27
Модем, АОН





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский