Остерегайтесь определенной «разумной атрибуции», потому что они часто являются источником ложного мифа из-за отсутствия контекста. ОП пометил сообщение как C, так и C++.
K&R может быть полубогом в истории C, но определенно не может считаться авторитетом в C++. Кроме того, оптимизация компилятора может играть фундаментальную роль в C ++, но часто рассматривается как «оскорбительная» для системных программистов C (им нравится рассматривать C как «ассемблер с выражениями», а не как «язык высокого уровня»).
Сегодняшние компиляторы, скорее всего, будут создавать точно такой же код (это можно легко доказать), и использование того или другого в большей степени зависит от вкуса, чем от другого.
В этом смысле я предпочитаю for(;;)
, потому что легко могу прочитать его как "навсегда", а while(true)
читать как "пока эта истина верна", что делает вас понять, как, если это может быть даже ложным ... . 2 мс мозгов потрачено впустую! (Но это личное мнение: я знаю многих людей, которые больше думают о for(;;)
, чем while(true)
)
Тем не менее, я также могу распознать их обоих как «живописные изображения» (не читая текст, просто глядя на то, как они выглядят через фотографическую память), указывающие на одну и ту же интеллектуальную концепцию (оставайтесь здесь, пока кто-нибудь не вышвырнет вас изнутри).
Насчет предупреждения MS, иногда оно спасает от плохо написанных выражений (типа true||a
). Но явно злоупотребляют и не должны появляться из-за тривиальных выражений без операций внутри. Бесстрашный, компилятор MS выдает один и тот же машинный код в обоих случаях. Может быть, обратная связь с MS сделает их менее утомительными в отношении этого предупреждения в будущих выпусках.
person
Emilio Garavaglia
schedule
28.11.2011
true
... - person fredoverflow   schedule 28.11.2011true
— это макрос, определенный вstdbool.h
(стандарт C99, раздел 7.16). - person JeremyP   schedule 28.11.2011true
в C. - person Steve Jessop   schedule 28.11.2011for(;;)
противwhile(1)
. Но теперь мне искренне любопытно, может ли кто-нибудь придумать хорошую историческую цитату для фактоида PDP-11. - person hugomg   schedule 28.11.2011