LINUX.ORG.RU

Re: Насколько неправильно так делать?

он не то чтобы не переносим, он просто некорректен i.e. на всех системах должен работать одинаково криво so думаю, что он вполне переносим :)

// wbr

klalafuda ★☆☆ ()

Re: Насколько неправильно так делать?

а что тебя смутило? С этим кодом все нормально, за исключением того
что код можно переписать более лаконично и рациональней, например вместо
sizeof(double) * SIZE можно просто написать sizeof(array), или даже так:
double array[SIZE] = { 0 }, тогда вообще никакой memset не нужен

aton ()
Ответ на: Re: Насколько неправильно так делать? от aton

Re: Насколько неправильно так делать?

Вопрос в том, насколько такой код переносим. На x86 работает - интересно было бы знать, везде ли так.

А по-поводу краткости кода... Это ж пример :)

syomin ()
Ответ на: Re: Насколько неправильно так делать? от aton

Re: Насколько неправильно так делать?

> а что тебя смутило?

double var;
memset(&var, 0, sizeof(var)) != 'var = 0' :)

ps: ессно если автор хочет установить значение всех элементов массива в ноль.

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: Насколько неправильно так делать? от klalafuda

Re: Насколько неправильно так делать?

>думаю, что он вполне переносим :)

в оракловых доках по OCI проскакивали жалобы на плохую переносимость такого кода.

по ихним рекомендации надо было писать:

#define SIZE 1024

double array[SIZE];

memset(array, 0, sizeof(array[0]) * SIZE);

варианты предложенные предыдучим оратором тоже сойдут, хотя можно добавить ещё и такое

double array[SIZE] = {};

cvv ★★★★★ ()

Re: Насколько неправильно так делать?

Вопрос в том, можно ли обнулять значение переменной типа double (или float) путём инициализации нулевым значением области памяти, занимаемой этой переменной.

syomin ()
Ответ на: Re: Насколько неправильно так делать? от syomin

Re: Насколько неправильно так делать?

> Вопрос в том, можно ли обнулять значение переменной типа double (или float) путём инициализации нулевым значением области памяти, занимаемой этой переменной.

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

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: Насколько неправильно так делать? от aton

Re: Насколько неправильно так делать?

кто знает насколько эквивалентны следующие обьявления в контексте текущего треда?

double array[SIZE] = { };
double array[SIZE] = { 0 };
double array[SIZE] = { 0.0 };

я склонен считать что это одно и тоже, или я всётаки не прав?

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