C/C++

Jul. 25th, 2022 02:23 am
avva: (Default)
[personal profile] avva


(это будет интересно программистам, остальные - извините)

Эта программа напечатает 18, если ее скомпилировать как C, и 19, если как C++.

Не сразу вспомнил, почему. Прикольно.

Date: 2022-07-24 11:30 pm (UTC)
ircicq: (Default)
From: [personal profile] ircicq
изменился смысл слова `auto`

Date: 2022-07-25 12:49 am (UTC)
paserbyp: (Default)
From: [personal profile] paserbyp
А что в стандарте С++ изменили auto? Когда это случилось? Я никогда этим не пользуюсь и не советую этим пользоваться...

В 2011 стандарт С++ изменили и он стал отличаться от стандарта С и после 2017 года еще чего там поменяли, короче чтобы жизнь малиной не казалось!
Edited Date: 2022-07-25 12:54 am (UTC)

Date: 2022-07-25 02:00 am (UTC)
ircicq: (Default)
From: [personal profile] ircicq
`auto` (начиная с C++11) означает то же что `var` в других языках (C#, JS) - тип выводится из выражения.

Один из принципов этого языка: реюзать старые keyword насколько возможно, чтоб не ломать написанные программы.
Edited Date: 2022-07-25 02:02 am (UTC)

Date: 2022-07-25 03:14 am (UTC)
paserbyp: (Default)
From: [personal profile] paserbyp
Не хочу выглядеть старой брюзжащей калошей, но прийдется. Компиляцию они не ломают, а исполнение поломано. Лучше уж делать наоборот?
Edited Date: 2022-07-25 03:14 am (UTC)

Date: 2022-07-25 03:31 am (UTC)
ircicq: (Default)
From: [personal profile] ircicq
В данном случае были аргументы:
1. `auto` в здравом уме почти никто не использовал с 70-х годов
2. `var` во многих программах использовался как идентификатор переменной.

Date: 2022-07-25 03:56 am (UTC)
paserbyp: (Default)
From: [personal profile] paserbyp
Логично, но как насчет исключений из правил?

Date: 2022-07-25 04:12 am (UTC)
ircicq: (Default)
From: [personal profile] ircicq
Вышеприведенный код компилируется в Си и в C++11, но не в более ранних C++.

То есть обнаружить такой класс ошибок довольно просто: при портировании старого кода с Си на C++ включать опции старой версии языка

canned stackoverflow response

Date: 2022-07-25 05:49 pm (UTC)
epimorphisms_split: (Default)
From: [personal profile] epimorphisms_split

Please don't post images of code.

(Goes together with -1 and vote to close).

Here is another one:

#include <stdio.h>

int main()
{
    int x = sizeof("H")/sizeof('H');
    printf("%d\n", 18+x/2);
}

January 2026

S M T W T F S
    1 2 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 4th, 2026 06:01 am
Powered by Dreamwidth Studios