Запитання з тегом «c»

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

7
Ініціалізація всього 2D-масиву одним значенням
З наступною декларацією int array[ROW][COLUMN]={0}; Я отримую масив з усіма нулями, але з наступним int array[ROW][COLUMN]={1}; Я не отримую масив з одним значенням. Значення за замовчуванням все ще 0. Чому така поведінка і як я можу ініціалізувати всі 1? РЕДАКТУВАТИ: Я щойно зрозумів, що використання memsetзі значенням 1 буде встановлювати …

2
Switch-case не компілюється після коментування невикористаного рядка
Ось мій код: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> int main (void) { struct addrinfo hints; memset (&hints, 0, sizeof hints); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_DGRAM; hints.ai_flags = AI_CANONNAME; struct addrinfo *res; getaddrinfo ("example.com", "http", &hints, &res); printf ("Host: %s\n", "example.com"); …
82 c 

2
Чому твердження “2i;” НЕ викликати помилку компілятора?
Замість 2*i, я необережно написав 2i: int foo(int i) { 2i; return 2i; } Я очікував, що компілятор виявить помилку. Але цього не сталося. Тож чи 2iсправжнє твердження на мові C? Якщо так, то що це робить? Спантеличений! Я скомпілював за допомогою gcc версії 5.3.0 і ось вихід збірки: .file …
82 c  syntax 


6
спільні глобальні змінні в C
Як я можу створити глобальні змінні, які спільно використовуються в C? Якщо я поміщу його у файл заголовка, тоді компоновник скаржиться, що змінні вже визначені. Чи єдиний спосіб оголосити змінну в одному з моїх файлів C та вручну поставити externs у верхній частині всіх інших файлів C, які хочуть її …

3
Збільшення "замаскованих" бітсет
На даний момент я складаю процес написання перелічувача дерев, де я зіткнувся з такою проблемою: Я розглядаю замасковані бітсети, тобто бітсети, де встановлені біти є підмножиною маски, тобто 0000101з маскою 1010101. Я хочу досягти збільшення бітсету, але лише стосовно маскуваних бітів. У цьому прикладі результат буде 0010000. Щоб зробити це …

3
Чому код активно намагається запобігти оптимізації зворотних викликів?
Заголовок запитання може бути дещо дивним, але справа в тому, що, наскільки мені відомо, взагалі немає нічого, що могло б говорити проти оптимізації виклику хвоста. Однак, переглядаючи проекти з відкритим кодом, я вже натрапив на кілька функцій, які активно намагаються перешкодити компілятору виконувати оптимізацію хвостового виклику, наприклад, реалізація CFRunLoopRef, яка …

3
Чому панель GCC працює з NOP?
Я працюю з C короткий час, і зовсім недавно почав потрапляти в ASM. Коли я складаю програму: int main(void) { int a = 0; a += 1; return 0; } Розбирання objdump має код, але nops після ret: ... 08048394 <main>: 8048394: 55 push %ebp 8048395: 89 e5 mov %esp,%ebp …
81 c  gcc  assembly 

5
“Int * nums = {5, 2, 1, 4}” спричиняє помилку сегментації
int *nums = {5, 2, 1, 4}; printf("%d\n", nums[0]); викликає сегментацію, тоді як int nums[] = {5, 2, 1, 4}; printf("%d\n", nums[0]); ні. Зараз: int *nums = {5, 2, 1, 4}; printf("%d\n", nums); відбитки 5. Виходячи з цього, я здогадався, що нотація ініціалізації масиву, {}, сліпо завантажує ці дані в …
81 c  arrays  pointers 

6
Константи Enum поводяться по-різному в C та C ++
Чому це: #include <stdio.h> #include <limits.h> #include <inttypes.h> int main() { enum en_e { en_e_foo, en_e_bar = UINT64_MAX, }; enum en_e e = en_e_foo; printf("%zu\n", sizeof en_e_foo); printf("%zu\n", sizeof en_e_bar); printf("%zu\n", sizeof e); } друк 4 8 8на C та 8 8 8на C ++ (на платформі з 4 байтовими …
81 c++  c 

4
У чому особливість конструкцій?
Я знаю, що в C ми не можемо повернути масив із функції, а вказівник на масив. Але я хочу знати, в чому особливістьstructs що робить їх повернутими за допомогою функцій, хоча вони можуть містити масиви. Чому structобертання робить наступну програму дійсною? #include <stdio.h> struct data { char buf[256]; }; struct …

4
Потоки і сигнали POSIX
Я намагався зрозуміти тонкощі взаємодії потоків POSIX та сигналів POSIX. Мене, зокрема, цікавить: Який найкращий спосіб контролювати, до якого потоку подається сигнал (припускаючи, що це не фатально в першу чергу)? Який найкращий спосіб повідомити черговий потік (який насправді може бути зайнятий), що сигнал надійшов? (Я вже знаю, що це погана …
81 c  pthreads  signals 

5
Які найкращі (портативні) міжплатформні математичні бібліотеки довільної точності? [зачинено]
Зачинено. Це питання не відповідає вимогам щодо переповнення стека . Наразі відповіді не приймаються. Хочете покращити це питання? Оновіть питання, щоб воно було актуальним для переповнення стека. Закрито 5 років тому . Удосконалюйте це питання Я шукаю хорошу математичну бібліотеку довільної точності на C або C ++. Не могли б …
81 c++  c  biginteger  bigdecimal  gmp 

8
Заміна ld золотом - будь-який досвід?
Хтось намагався використовувати goldзамість ld? gold обіцяє бути набагато швидшим, ніж ld, тому це може допомогти прискорити тестові цикли для великих програм C ++, але чи можна використовувати його як заміну для ld? Можна gcc/ g++безпосередньо зателефонувати gold.? Чи є якісь відомі помилки чи проблеми? Незважаючи goldна те, що з …

9
Чи може код, який ніколи не буде виконаний, викликати невизначену поведінку?
Код, який викликає невизначену поведінку (у цьому прикладі ділення на нуль) ніколи не буде виконаний, чи програма все ще невизначена? int main(void) { int i; if(0) { i = 1/0; } return 0; } Я думаю, що це все ще невизначена поведінка, але я не можу знайти жодних доказів у …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.