LINUX.ORG.RU

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

// wbr

klalafuda ★☆☆
()

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

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

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

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

syomin
() автор топика
Ответ на: комментарий от aton

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

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

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

// wbr

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

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

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

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

#define SIZE 1024

double array[SIZE];

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

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

double array[SIZE] = {};

cvv ★★★★★
()

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

syomin
() автор топика
Ответ на: комментарий от syomin

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

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

// wbr

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

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

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

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

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

Ты прав это одно и тоже, все три варианта инициализируют логическим нулем, для double это как раз 0.0

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