LINUX.ORG.RU

C, if

 


0

1

Почему сишники пишут if-ы вот так?

if (!(words = (char**) realloc(words, size*sizeof(char*)))) {



Почему не в 2-3-4 строчки? Компилятору совершенно всё равно, человеку куда более читаемо. Это что, понты или наоборот хороший тон(в чём хороший тогда)?

★★★★★

Я бы разбил на 2 строки, но сам по себе код хороший.

slapin ★★★★★
()
Ответ на: комментарий от olelookoe

Хакеры, которые гордятся write only кодом, сразу выдают себя как бездельники, которым гордиться больше нечем.

При реальной работе над кодом на это даже внимание обращать некогда.

А код по форме должен быть максимально квадратно-гнездовым, без художественных изысков. Для изысков есть разные специальные соревнования.

А на работе мастерство в том, чтобы решить задачу в срок в полном объеме, без багов и с оптимальным О().

wandrien ★★★
()
Ответ на: комментарий от wandrien

Хакеры, которые гордятся write only кодом, сразу выдают себя как бездельники, которым гордиться больше нечем.

это вполне может быть болезнью роста, тогда это лечится.

остальное плюсую, добавить нечего.

olelookoe ★★★
()

Так более красиво. Кстати, настоящий сишник не ставил бы (char**).

Reset ★★★★★
()
Ответ на: комментарий от wandrien

Понты хакеров. Им «красиво».

+1

А ещё без скобок некоторые любят сложные выражения в if писать, вспоминай потом, как там приоритеты раскрываться будут.

EXL ★★★★★
()
Ответ на: комментарий от a1batross

В if это ради красоты,

Это ужасно.

EXL ★★★★★
()
Ответ на: комментарий от anonymous

Ммм… какая забористая Bash/Shell-лапша.

EXL ★★★★★
()
Ответ на: комментарий от EXL

вспоминай потом, как там приоритеты раскрываться будут.

Настоящий сишник расскажет про приоритеты, если его разбудить в середине ночи!

Harald ★★★★★
()
Ответ на: комментарий от the1

знать приоритеты операций - это каждодневная необходимость при написании кода, незнание приводит к багам, баги - к лишним затратам времени, сегфолтам, переполнениям, падениям спутников, взрывам ракет, человеческим жертвам, гроб-гроб-кладбище

Harald ★★★★★
()
Ответ на: комментарий от Harald

знать приоритеты операций - это каждодневная необходимость при написании кода

или просто ставить скобки/разбивать на несколько действий…

fsb4000 ★★★★★
()

сишники должны страдать

superuser ★★★★☆
()
Ответ на: комментарий от Harald

Может проще писать красивый код, а не лапшу, требующую распарсить 15 приоритетов в одной строке?

См. выше про хакеров и гордость.

wandrien ★★★
()
Ответ на: комментарий от yu-boot

присвоение в условии if

У Кернигана и Ритчи полкниги так. Довольно ловко, когда привыкнешь. Может, кто из сишников читал её)

pihter ★★★★★
()

Это плохой код. Любой линтер выдаст предупреждение и заставит переписывать. Пайплайн не пройдёт.

anarquista ★★★★★
()
Ответ на: комментарий от Harald

зазубрить приоритеты, чем каждый раз ставить лишние скобки

Вот. Где можно в явном виде почитать такие умолчания в Си, уровня «число ноль это всегда то же самое, что NULL, пустая строка или FALSE для условий»? Из туториалов я получаю по сути готовые «заклинания».

yu-boot ★★★★★
() автор топика
Ответ на: комментарий от yu-boot

пустая строка или FALSE - это уже не про С

а так у всего есть первоисточник - текст стандарта, документация компилятора, исходники

Harald ★★★★★
()
Ответ на: комментарий от Harald

пустая строка или FALSE - это уже не про С

int i=0;
if(!i) {
...



Типовая же вещь, нет?

Например в любимом Ruby раздражает, что там отсутствие результата не всегда срабатывало как false в условиях. :)

yu-boot ★★★★★
() автор топика
Ответ на: комментарий от yu-boot

Типовая же вещь, нет?

С таким подходом тебе надо fbc пользовать для генерации сишных файлов. И уже в них смотреть, что есть «типовое».

anonymous
()
Ответ на: комментарий от anarquista

экстремистов спросить забыли

anonymous
()
Ответ на: комментарий от Harald

Особенностью Си является то, что в нём отсутствует специальный булев тип. Истиной в си является любой ненулевое значение, ложью 0. Операторы сравнения также возвращают в качестве лжи 0, в качестве истины любое ненулевое значение.
Например

	
#include<conio.h>
#include<stdio.h>
 
int main() {
    if (1) {
        printf("TRUE");
    } else {
        printf("FALSE");
    }
    getch();
}



В этом примере будет выведено TRUE

Тут всё правильно?

yu-boot ★★★★★
() автор топика
Ответ на: комментарий от yu-boot

Выкинь эту анскильную чушь. Откуда приволок хоть?

anonymous
()
Ответ на: комментарий от X512

Хм, вообще-то я имел в виду потенциальное переполнение буфера; а const даже и не заметил. :)

dimgel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.