Откуда диапазон значений, тоже понятно. Но что конкретно происходит при попытке выйти за этот диапазон?
Почему при вычислении степеней двойки в какой-то момент выводится минимальное значение, -32768, а затем - одни нули?
Что происходит при других операциях со слишком большими числами?
Проект создаёт статическую библиотеку mylib, но в неё не включена требуемая реализация boost, то есть при линковке приложения с mylib нужно явно указывать, что нужно линковать boost.
pkg-config --libs <имя библиотеки>
и получает список ключей для линковки. $ cat > dump-fp.c <<EOF
#include <inttypes.h>
#include <string.h>
#include <stdio.h>
void dump_float(float v)
{
uint32_t i;
memcpy(&i, &v, sizeof(i));
printf("0x%08"PRIx32"\n", i);
}
void dump_double(double v)
{
uint64_t i;
memcpy(&i, &v, sizeof(i));
printf("0x%016"PRIx64"\n", i);
}
int main(void)
{
dump_float(1.0f);
dump_double(1.0l);
return 0;
}
EOF
$ gcc dump-fp.c -o dump-fp
$ ./dump-fp
0x3f800000
0x3ff0000000000000
Как исправить ошибку «stdio.h: No such file or directory »?
#include "..." search starts here:
#include <...> search starts here:
Мне нужно прочитать из заголовка адрес точки входа
text[t] = word1; // Пытаемся ее сохранить в массив
выводить будет только последнее значение все i-раз. Никак не могу понять в чем проблема, подскажите пожалуйста
for(t = 0; t < 5; t++){
scanf_s("%s", word1, 32);
// Проводим некоторые операции со строкой //
text[t] = strdup(word1); // Пытаемся ее сохранить в массив предварительно попытавшись скопировать
}
for (t = 0; t < N; t++) {
printf("\n %d. %s \n", t, text[t]); // Пытаемся вывести
free(text[t]); // Пытаемся освободить
}
как мне преобразовать на си число(дробное. целое) в внутренний формат(спт/сфт)
float x = 76.625;
uint32_t fix = (int32_t)(x * (1 << 16));
printf("%f\n", (float)fix / (1 << 16));
Вопрос первый: я правильно понимаю, что эту структуру данных где будут хранится мои слова можно назвать хэш таблицей, а функцию, определяющую к какой ячейке массива отнести очередное слово - хэш-функцией?
По крупицам собираю информацию в гугле относительно динамических списков и массивов структур, но картина пока не складывается :(
Подскажите как это реализовать и\или где можно почитать о создании таких вот вещей?
Как заставить iconv работать?
printf("result: '%s'\n", converted_start);
в converted_start -- utf8...fprintf(stdout, "debug: event = RUNE, data = %c\n", iso);
iso -- это во-первых массив, а во-вторых, массив символов CP866.void parse_callback( struct parser_event *pe, void *userdata )
{
switch ( pe->event ) {
case EVENT_RUNE: {
char *iso = &pe->rune;
char out[10] = {0};
char *converted = out;
size_t ibl = 1;
size_t obl = sizeof(out);
iconv_t foo = iconv_open("CP866", "UTF-8");
int ret;
if((int) foo == -1) {
if (errno == EINVAL) {
fprintf(stderr,
"Conversion is not supported");
} else {
fprintf(stderr, "Initialization failure:\n");
}
break;
}
ret = iconv(foo, &iso, &ibl, &converted, &obl);
// if iconv fails it returns -1
if(ret == (iconv_t)-1) {
perror("iconv");
} else {
// otherwise the number of converted bytes
printf("%i bytes converted\n", ret);
printf("result: '%s'\n", out);
}
iconv_close(foo);
fprintf(stdout, "debug: event = RUNE, data = %c\n", pe->rune);
break;
}
case EVENT_FONT:
fprintf( stderr, "FUCK FONT\n");
fprintf( stdout, "debug: event = FONT, data = %d\n", pe->font_id );
break;
case EVENT_ERROR:
fprintf( stderr, "FUCK ERROR\n");
fprintf( stdout, "debug: event = ERROR\n" );
break;
default:
fprintf( stdout, "debug: event = UNKNOWN\n" );
}
}
Подскажите пожалуйста, какую функцию здесь выполняет строка return ((bitset.intRepresent & (bitset.intRepresent-1)) == 0); // denormalized number - как она проверяет число на денормализованое значение?
#include <stdint.h>
#include <string.h>
int isPowOf2(double number)
{
uint64_t v;
uint64_t m;
memcpy(&v, &number, sizeof(v));
m = v & ((UINT64_C(1) << 52) - 1); // m holds the mantissa bits
switch ((v >> 52) & 0x7ff) { // check the exponent bits
case 0: // 0 or denormal
if (m == 0) // 0 is represented by exponent and mantissa both 0
return 0; // 0 is not a power of 2
else // denormal number has all its bits in the mantissa
return m & (m - 1) == 0; // a power of 2 has exactly one 1 bit in m
case 0x7ff: // infinity or NaN
return 0; // neither is a power of 2
default: // ordinary number always has leading 1 which is not recorded in the mantissa
return m == 0; // a power of 2 has exactly one 1 bit and we know that it's not in m
}
}
memset(arrayC, '-', sizeof arrayC);
if( x == arrayI[i][j])
Как присвоить элементу любому этой матрицы любой символ?
arrayC[i][j] = 'W';
Как мне избавится от дублирования кода, который одинаковый для нескольких целей, однако, отличается именами файлов(пусть имена файлов совпадают с названием целей)?
define generate-targets
$(1):
make -j5 TARGET=unwired BOARD=$$(BOARD)/$$(CPU) -f makefiles/Makefile.$$@
../bootloader/generate-metadata/generate-metadata $$@.bin 0x0 0x01A00001 1
srec_cat firmware-metadata.bin -binary $$@.bin -binary -offset 0x100 -o $$@-ota-image.bin -binary
rm $$@.hex
$(1)-fb: $(1)-CLEAN
../../tools/backdoor-bootloader.py -e -w -v $(1)-firmware.hex
$(1)-f: $(1)-CLEAN
/Applications/ti/Uniflash/flash_cc1310.sh $(1)-firmware.hex
$(1)-ota: $(1)
scp $(1)-ota-image.bin root@192.168.20.187:/root/unwired_smarthome
endef
$(eval $(call generate-targets,ubrige))