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

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


4
Чому всі набирають тип порівняно зі стандартними типами С?
Якщо ви хочете використовувати Qt , ви повинні прийняти quint8, quint16і так далі. Якщо ви хочете використовувати GLib , ви повинні вітати guint8, guint16і так далі. У Linux є u32, s16і так далі. УНЦ / OS визначає SINT32, UINT16і так далі. І якщо вам доведеться використовувати якесь поєднання цих речей, …
103 c++  c  stdint 

12
Чому буквені букви символів С замість знаків?
У C ++ sizeof('a') == sizeof(char) == 1. Це має інтуїтивний сенс, оскільки 'a'є символом буквальним, і sizeof(char) == 1як визначено стандартом. У C однак sizeof('a') == sizeof(int). Тобто, виявляється, що буквалі символів C - це фактично цілі числа. Хтось знає, чому? Я можу знайти багато згадок про цю вигадку …
103 c++  c  char  sizeof 

7
Кома в макросі C / C ++
Скажімо, у нас є такий макрос #define FOO(type,name) type name Якими ми могли б користуватися FOO(int, int_var); Але не завжди так просто: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 Звичайно, ми могли б зробити: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK що …
103 c++  c  macros  c-preprocessor 


8
Специфікатор ширини Printf для підтримки точності значення з плаваючою комою
Чи існує printfспецифікатор ширини, який може бути застосований до специфікатора плаваючої точки, який автоматично відформатуватиме висновок на необхідну кількість значущих цифр, таким чином, що при скануванні рядка назад в ньому набувається початкове значення плаваючої точки? Наприклад, припустимо, що я друкую a floatз точністю до 2десяткових знаків: float foobar = 0.9375; …

3
Різниця між int32, int, int32_t, int8 та int8_t
int32_tНещодавно я натрапив на тип даних у програмі C. Я знаю , що він зберігає 32 біт, але не intта int32зробити те ж саме? Також я хочу використовувати charв програмі. Чи можна використовувати int8_tзамість цього? Яка різниця? Підсумовуючи: яка різниця між int32, int, int32_t, int8 та int8_t в C?
103 c  int  declaration 

7
Друк шістнадцяткових знаків на С
Я намагаюся читати в рядку символів, потім роздруковую шістнадцятковий еквівалент символів. Наприклад, якщо у мене є рядок, тобто "0xc0 0xc0 abc123"перші два символи знаходяться c0в шістнадцятковій формі, а решта - abc123в ASCII, то я повинен отримати c0 c0 61 62 63 31 32 33 Однак printfвикористання %xдає мені ffffffc0 ffffffc0 …
103 c  hex  printf 

4
Що означає -D_XOPEN_SOURCE / означає?
Нещодавно я зіткнувся з кодом, який gcc не скомпілював би без цього аргументу. Я перевірив сторінку керівництва gcc, але не знайшов цього конкретного варіанту. Я знайшов XOPEN_SOURCE, але пояснення того, що це робить, було мало. Чи може хтось детально розказати? Я знаю , -D_XOPEN_SOURCEможна встановити різні значення, наприклад 400, 600, …
103 c  gcc 

2
Що означає && void * p = && abc;
Я натрапив на фрагмент коду void *p = &&abc;. Яке значення &&тут? Я знаю про посилання rvalue, але я думаю, що &&використання в цьому контексті відрізняється. Що &&вказується на void *p = &&abc;?
102 c++  c  gcc  operators 

10
“F” після номера
Що робить f цифри після цифр? Це від C або Objective-C? Чи є різниця в тому, щоб не додавати це до постійної кількості? CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f); Чи можете ви пояснити, чому я не просто писав би: CGRect frame = CGRectMake(0, 0, 320, 50);

7
Зробіть програму запускати повільно
Чи є спосіб запустити програму C ++ повільніше, змінивши будь-які параметри ОС в Linux? Таким чином я хотів би змоделювати те, що буде, якщо ця конкретна програма запуститься на реальній повільній машині. Іншими словами, швидша машина повинна вести себе повільніше, ніж ця програма.
102 c++  c  linux  unix  ubuntu 

6
Чи мають визначення структури входити у файл .h чи .c?
Я бачив як повні визначення structs в заголовках, так і лише декларації - чи є якась перевага одного методу над іншим? Якщо це має значення, я, як правило, набираю такі структури, як у .h typedef struct s s_t; Редагувати Щоб було зрозуміло, параметри - це декларація у файлі заголовка та …
102 c  header  struct 

6
snprintf та Visual Studio 2010
Мені прикро, щоб застрягти у використанні VS 2010 для проекту, і я помітив, що наступний код все ще не створюється за допомогою компілятора, що не відповідає стандартам: #include <stdio.h> #include <stdlib.h> int main (void) { char buffer[512]; snprintf(buffer, sizeof(buffer), "SomeString"); return 0; } (не вдалося компілювати з помилкою: C3861: 'snprintf': …

11
Чому printf з одним аргументом (без специфікаторів конверсії) застарів?
У книзі, яку я читаю, написано, що printfз одним аргументом (без специфікаторів перетворення) застаріла. Рекомендує замінити printf("Hello World!"); з puts("Hello World!"); або printf("%s", "Hello World!"); Може хтось скаже мені, чому printf("Hello World!");це неправильно? У книзі написано, що вона містить вразливості. Які ці вразливості?

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