|
А почему так инициализация |
|
|
|
 |
Ответов
|
Jul 25 2018, 10:20
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(XVR @ Jul 25 2018, 10:58)  Потому что С позволяет программисту сделать всё, что он хочет - отстрелить обе ноги и повесится. С++ в этом отношении более строгий, он это не проглотит. Да ладно? Про какой компилятор речь? IAR вполне себе тоже "проглатывает"  ((( В примере: Код static void Func(char *s) { s[1] = 0; } static char const t1[] = "test"; static char const *t2 = "test"; Func("test"); Func(t1); Func(t2); негодование компилятора (IAR_7.80) вызывают только последние 2 строчки, но к сожалению никак не Func("test");  Хотя хоть убей - не пойму в чём принципиальная разница между Func("test"); и static char const t1[] = "test"; Func(t1); ? Language: C++; Dialect: Extended Embedded C++ (default).
|
|
|
|
|
Jul 26 2018, 12:42
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(jcxz @ Jul 25 2018, 13:20)  Да ладно? Про какой компилятор речь? IAR вполне себе тоже "проглатывает"  ((( В примере: Код static void Func(char *s) { s[1] = 0; } Func("test"); Это специальный случай - для него в стандарте сделали хак (иначе не назовёшь), иначе бы разломались практически все С программы (а С++ декларировался как совместимый с С, ха ха). Цитата(DASM @ Jul 25 2018, 18:30)  Еще интересный вопрос возник. Как вам такая штука Код int searchDB (int v) { //.............. } .... main... searchDB('1234'); Тут gcc дает warning что то там multibyte, точно не помню. Просто интересное применение, раньше как-то не встречал такую идею. Нормальная multi byte символьная константа. Описана в стандарте. Единственный её минус (который практически не даёт её применять) - стандарт не описывает endianess этой самой константы, т.е. неизвестно, с какого конца целого числа будут выкладываться символы  Если вам всё равно как именно она формируется, то использовать можно.
|
|
|
|
|
Jul 26 2018, 12:56
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(XVR @ Jul 26 2018, 15:42)  Единственный её минус В данном случае это - не единственный минус. В этом достаточно убедится, попытавшись дать не sizeof(int), а меньше символов, например 2 или 3. Компилятор предупредит соотв. warning, но проект все равно успешно соберется. Не трудно догадаться, что предсказать результат работы такой функции в этом случае уже никто не сумеет ...
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jul 26 2018, 13:39
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(Forger @ Jul 26 2018, 16:03)  Что будет в этой переменной int v, которую ожидает функция, если ей дать не '1234', а например '1', '12', '123' ? Т.е. вы утверждаете, что запись int v='1'; неправильна? Это что то новое, до сих пор миллионы програмистов ничего неорпеделённого в такой записи не видели. По вашему вопросу - в v будет 0x31, 0x3132, 0x313233 или 0x31, 0x3231, 0x333231 соотвественно для BE/LE машин. Цитата Нули или "мусор" из стека? "Стандарт" описывает эти нюансы? Никакого мусора 'из стека'. И да, стандарт эти 'нюансы' описывает. Может вы спутали литеральные константы и строки? Речь шла о '1234' а не о "1234" (второе вообще даст ошибку)
|
|
|
|
|
Jul 26 2018, 13:47
|

Профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831

|
Цитата(XVR @ Jul 26 2018, 16:39)  Т.е. вы утверждаете, что запись int v='1'; неправильна? Не утверждаю, а лишь спрашиваю  Цитата Никакого мусора 'из стека'. И да, стандарт эти 'нюансы' описывает. Ясно, значит, недостающие байты во многобайтовой переменной будут заполнены нулями. А BE/LE влияет на положение этих неявных нулей в переменной? С какой стороны будет "обрезана" слишком длинная литеральная константа (например, '12345678' для 4-байтового int) с учетом BE/LE? Цитата Может вы спутали литеральные константы и строки? Не спутал, мне известна разница. Честно говоря, никогда не использовал подобные неявные инициализации - многобайтовые литеральные константы. И, судя по всему, правильно делал
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
DASM А почему так инициализация Jul 24 2018, 18:43    jcxz Цитата(DASM @ Jul 24 2018, 22:00) А почем... Jul 25 2018, 05:16     DASM Цитата(jcxz @ Jul 25 2018, 08:16) Согласе... Jul 25 2018, 15:22      Forger Цитата(DASM @ Jul 25 2018, 18:22) M... Jul 25 2018, 15:26    esaulenka Цитата(DASM @ Jul 24 2018, 22:00) А почем... Jul 25 2018, 09:56     Forger Цитата(esaulenka @ Jul 25 2018, 12:56) В ... Jul 25 2018, 10:02 DASM Цитата(aaarrr @ Jul 24 2018, 21:46) Потом... Jul 24 2018, 18:56 ViKo ЦитатаУказатель модифицировать можно, а вот содерж... Jul 24 2018, 18:59 Forger Цитата(DASM @ Jul 24 2018, 21:43) CODEstr... Jul 25 2018, 07:04 DASM Еще интересный вопрос возник. Как вам такая штука
... Jul 25 2018, 15:30 Forger Цитата(DASM @ Jul 25 2018, 18:27) Еще инт... Jul 25 2018, 15:30  DASM Цитата(Forger @ Jul 25 2018, 18:30) На из... Jul 25 2018, 15:31   Forger Цитата(DASM @ Jul 25 2018, 18:31) Стоп ст... Jul 25 2018, 15:39    DASM Цитата(Forger @ Jul 25 2018, 18:39) Разве... Jul 25 2018, 16:01     Forger Цитата(DASM @ Jul 25 2018, 19:01) Просто ... Jul 25 2018, 16:10      DASM Цитата(Forger @ Jul 25 2018, 19:10) Сочув... Jul 25 2018, 16:24       Forger Цитата(DASM @ Jul 25 2018, 19:24) Не, соч... Jul 25 2018, 16:33        DASM Цитата(Forger @ Jul 25 2018, 19:33) Ну, е... Jul 25 2018, 16:49         Forger Цитата(DASM @ Jul 25 2018, 19:49) проблем... Jul 25 2018, 17:05       jcxz Цитата(DASM @ Jul 25 2018, 19:24) Операци... Jul 25 2018, 20:30        Forger Цитата(jcxz @ Jul 25 2018, 23:30) Сурово ... Jul 25 2018, 20:35   jcxz Цитата(DASM @ Jul 25 2018, 18:31) Иначе в... Jul 25 2018, 16:19    Arlleex Цитата(jcxz @ Jul 25 2018, 19:19) Нормаль... Jul 25 2018, 16:31 DASM Ни разу не видел еще готовый проект с кучей доступ... Jul 25 2018, 17:41 Forger Цитата(DASM @ Jul 25 2018, 20:41) Ни разу... Jul 25 2018, 17:45  DASM Цитата(Forger @ Jul 25 2018, 20:45) Я тож... Jul 25 2018, 17:48   Forger Цитата(DASM @ Jul 25 2018, 20:48) А как п... Jul 25 2018, 17:52    DASM Цитата(Forger @ Jul 25 2018, 20:52) Под я... Jul 25 2018, 18:15     Forger Цитата(DASM @ Jul 25 2018, 21:15) Я вообщ... Jul 25 2018, 18:34      DASM Цитата(Forger @ Jul 25 2018, 21:34) В это... Jul 25 2018, 18:42 DASM БолгенОС уже была.. Jul 26 2018, 02:32 Arlleex Цитата(jcxz @ Jul 26 2018, 00:30) Это ана... Jul 26 2018, 04:49 DASM "С какой стороны будет "обрезана" с... Jul 26 2018, 14:20 Forger Цитата(DASM @ Jul 26 2018, 17:20) "С... Jul 26 2018, 14:22 DASM С литеральными все понятно и вопроса не было бы. Я... Jul 26 2018, 15:25 Forger Цитата(DASM @ Jul 26 2018, 18:25) Вот ... Jul 26 2018, 15:35  XVR Цитата(Forger @ Jul 26 2018, 18:35) У мен... Jul 26 2018, 19:40 DASM Ну Майкрософт ошибку дает, видимо кто на что гораз... Jul 26 2018, 16:04 Forger Цитата(DASM @ Jul 26 2018, 19:04) то ++ с... Jul 26 2018, 16:18  DASM Цитата(Forger @ Jul 26 2018, 19:18) Раз п... Jul 26 2018, 16:43   Forger Цитата(DASM @ Jul 26 2018, 19:43) да нечи... Jul 26 2018, 17:12  DASM Цитата(Forger @ Jul 26 2018, 19:18) Раз п... Jul 27 2018, 04:57   Forger По логике i тут должен быть int, для этого тут пос... Jul 27 2018, 05:25    DASM Цитата(Forger @ Jul 27 2018, 08:25) По ло... Jul 27 2018, 05:42     Arlleex Цитата(DASM @ Jul 27 2018, 09:42) то буде... Jul 27 2018, 06:26      Herz Господа, пора бы остановиться, а? Очень не хочется... Jul 27 2018, 07:37     Forger Цитата(DASM @ Jul 27 2018, 08:42) Это не ... Jul 27 2018, 06:44 DASM i это не итератор, это локальная переменная типа э... Jul 27 2018, 07:29 Forger Цитата(DASM @ Jul 27 2018, 10:29) i это н... Jul 27 2018, 07:44 DASM Это int. Дома посмотрю, почему у Вас сомнения Jul 27 2018, 07:53 DASM Проверил, это точно int , собственно и сомнений не... Jul 29 2018, 12:15 Forger Цитата(DASM @ Jul 29 2018, 15:15) Провери... Jul 29 2018, 13:11  DASM Цитата(Forger @ Jul 29 2018, 16:11) Попро... Jul 29 2018, 15:32   Forger Заглумил я тут всех
Короче, увеличил кучу, все с... Jul 29 2018, 16:18 DASM "несколько непривычно для восприятия цикла fo... Jul 29 2018, 16:44 Forger Цитата(DASM @ Jul 29 2018, 19:44) мне неп... Jul 29 2018, 16:59 DASM ничего не понял. Предлагаете делать вектор на стек... Jul 29 2018, 17:08 Forger Цитата(DASM @ Jul 29 2018, 20:08) ничего ... Jul 29 2018, 17:15 esaulenka Я дико извиняюсь, но почему обсуждение стандартной... Aug 3 2018, 16:20 Forger Цитата(esaulenka @ Aug 3 2018, 19:20) Я д... Aug 3 2018, 16:47  XVR Цитата(Forger @ Aug 3 2018, 19:47) Другая... Aug 4 2018, 16:38   Forger Цитата(XVR @ Aug 4 2018, 19:38) Не надо. ... Aug 4 2018, 16:44 Kabdim Не стоит забывать что stl который с компилятором н... Aug 5 2018, 10:05 Forger Цитата(Kabdim @ Aug 5 2018, 13:05) EASTL
... Aug 5 2018, 15:20  Herz Цитата(Forger @ Aug 5 2018, 18:20) примен... Aug 5 2018, 18:53   Forger Цитата(Herz @ Aug 5 2018, 21:53) А просто... Aug 5 2018, 19:07 Herz По сути сказанного я с Вами полностью согласен.
Но... Aug 5 2018, 19:30 Forger Цитата(Herz @ Aug 5 2018, 22:30) то я пря... Aug 5 2018, 19:39 Herz Вот именно. Aug 5 2018, 19:48 Forger Цитата(Herz)чем буржуазный "экспириенс" ... Aug 5 2018, 20:06
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|