Вопросы с тегом «c»

C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.


3
Возможная ошибка GCC при возврате структуры из функции
Я полагаю, что обнаружил ошибку в GCC при реализации PCG PRNG О'Нила. ( Исходный код в проводнике компилятора Годболта ) После умножения oldstateна MULTIPLIER(результат сохраняется в rdi), GCC не добавляет этот результат INCREMENT, перемещая INCREMENTвместо него значение rdx, которое затем используется как возвращаемое значение rand32_ret.state. Минимальный воспроизводимый пример ( Compiler …
133 c  gcc  assembly  x86-64  compiler-bug 

7
Почему «sizeof (a? True: false)» выдает четыре байта?
У меня есть небольшой фрагмент кода об sizeofоператоре с троичным оператором: #include <stdio.h> #include <stdbool.h> int main() { bool a = true; printf("%zu\n", sizeof(bool)); // Ok printf("%zu\n", sizeof(a)); // Ok printf("%zu\n", sizeof(a ? true : false)); // Why 4? return 0; } Выход ( GCC ): 1 1 4 // …

18
Когда кто-нибудь будет использовать профсоюз? Это остаток от C-only дней?
Я научился, но на самом деле не получить союзы. Каждый текст на C или C ++, который я прохожу, представляет их (иногда мимоходом), но они, как правило, дают очень мало практических примеров того, почему или где их использовать. Когда профсоюзы будут полезны в современном (или даже устаревшем) случае? Мои только …
133 c++  c  unions 

3
Как распечатать uint64_t? Сбой: «ложный трейлинг«% »в формате»
Я написал очень простой тестовый код printf uint64_t: #include <inttypes.h> #include <stdio.h> int main() { uint64_t ui64 = 90; printf("test uint64_t : %" PRIu64 "\n", ui64); return 0; } Я использую ubuntu 11.10 (64 бит) и gcc версии 4.6.1 для его компиляции, но не смог: main.cpp: In function ‘int main()’: …
133 c++  c 

16
Потоки Windows: _beginthread против _beginthreadex против CreateThread C ++
Какой лучший способ начать обсуждение _beginthread, _beginthreadxили CreateThread? Я пытаюсь определить, в чем преимущества / недостатки _beginthread, _beginthreadexи CreateThread. Все эти функции возвращают дескриптор потока для вновь созданного потока, я уже знаю, что CreateThread предоставляет небольшую дополнительную информацию при возникновении ошибки (ее можно проверить, позвонив GetLastError) ... но какие вещи …
133 c++  c  multithreading  winapi 

7
Почему компилятор не может (или не может) оптимизировать предсказуемый цикл сложения в умножение?
Этот вопрос пришел в голову при чтении блестящего ответа Mysticial на вопрос: почему обрабатывать отсортированный массив быстрее, чем несортированный ? Контекст для задействованных типов: const unsigned arraySize = 32768; int data[arraySize]; long long sum = 0; В своем ответе он объясняет, что компилятор Intel (ICC) оптимизирует это: for (int i …

6
Есть ли в C функция сна, альтернативная миллисекундам?
У меня есть исходный код, который был скомпилирован в Windows. Я конвертирую его для работы в Red Hat Linux. Исходный код включает <windows.h>файл заголовка, и программист использовал Sleep()функцию для ожидания в течение миллисекунд. В Linux это не сработает. Однако я могу использовать sleep(seconds)функцию, но она использует целое число в секундах. …
133 c  linux  sleep 

3
LLVM против clang в OS X
У меня вопрос относительно llvm, clang и gcc на OS X. В чем разница между llvm-gcc 4.2, llvm 2.0 и clang? Я знаю, что все они построены на llvm, но чем они отличаются? Помимо более быстрой компиляции, в чем преимущество llvm перед gcc?
133 c++  c  gcc  llvm  clang 

10
Быстрый способ реализовать словарь на C
Одна из вещей, которую мне не хватает при написании программ на C, - это структура данных словаря. Какой самый удобный способ реализовать его на C? Я ищу не производительность, а простоту написания кода с нуля. Я тоже не хочу, чтобы он был универсальным - подойдет что-то вроде string-> int. Но …


25
Зачем кому-то использовать C вместо C ++? [закрыто]
В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, вновь открыть, обратитесь за …
132 c++  c 

13
Как сделать бесконечный пустой цикл, который не будет оптимизирован?
Стандарт C11, по-видимому, подразумевает, что итерационные операторы с постоянными управляющими выражениями не должны быть оптимизированы. Я беру свой совет из этого ответа , который конкретно цитирует раздел 6.8.5 из проекта стандарта: Оператор итерации, управляющее выражение которого не является константным выражением ... может быть реализован реализацией для завершения. В этом ответе …

19
Обратный отсчет быстрее, чем подсчет?
Наш учитель информатики как-то сказал, что почему-то эффективнее считать, чем считать. Например, если вам нужно использовать цикл FOR, а индекс цикла где-то не используется (например, выводит строку N * на экран), я имею в виду такой код: for (i = N; i >= 0; i--) putchar('*'); лучше, чем: for (i …
131 c  performance  loops 

10
Почему компиляторы C и C ++ допускают длину массивов в сигнатурах функций, когда они никогда не применяются?
Вот что я обнаружил в период обучения: #include<iostream> using namespace std; int dis(char a[1]) { int length = strlen(a); char c = a[2]; return length; } int main() { char b[4] = "abc"; int c = dis(b); cout << c; return 0; } Таким образом , в переменной int dis(char …
131 c++  c  arrays 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.