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

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

2
Що являє собою константа 0,0039215689?
Я постійно бачу це постійне спливання у різних файлах графічних заголовків 0.0039215689 Здається, це може мати щось спільне з кольором? Ось перший хіт в Google : void RDP_G_SETFOGCOLOR(void) { Gfx.FogColor.R = _SHIFTR(w1, 24, 8) * 0.0039215689f; Gfx.FogColor.G = _SHIFTR(w1, 16, 8) * 0.0039215689f; Gfx.FogColor.B = _SHIFTR(w1, 8, 8) * 0.0039215689f; …

13
Як знайти 'sizeof' (вказівник, що вказує на масив)?
По-перше, ось код: int main() { int days[] = {1,2,3,4,5}; int *ptr = days; printf("%u\n", sizeof(days)); printf("%u\n", sizeof(ptr)); return 0; } Чи є спосіб дізнатися розмір масиву, на який ptrвказує (замість того, щоб просто вказати його розмір, який становить чотири байти в 32-бітовій системі)?
309 c  arrays  pointers  sizeof 

11
Яка різниця між NULL, '\ 0' та 0?
У C, як видається, відмінності між різними значеннями нуля - NULL, NULі 0. Я знаю, що символ ASCII '0'оцінює до 48або 0x30. NULLПокажчик зазвичай визначається як: #define NULL 0 Або #define NULL (void *)0 Крім того, є NULхарактер, '\0'який, здається, також оцінює 0. Чи бувають випадки, коли ці три значення …
309 c  pointers  null 

8
Чому rand () + rand () видає від'ємні числа?
Я помітив, що rand()функція бібліотеки, коли вона викликається лише один раз у циклі, майже завжди видає додатні числа. for (i = 0; i < 100; i++) { printf("%d\n", rand()); } Але коли я додаю два rand()дзвінки, у генерованих номерів зараз більше негативних цифр. for (i = 0; i < 100; …
304 c  random 

20
Чому я завжди повинен включати попередження компілятора?
Я часто чую, що при компілюванні програм C і C ++ я повинен "завжди включати попередження компілятора". Чому це потрібно? Як це зробити? Іноді я також чую, що я повинен "трактувати попередження як помилки". Повинен я? Як це зробити?


5
Вилучення бітів з одним множенням
Я побачив цікаву техніку, використану у відповіді на інше питання , і хотів би зрозуміти її трохи краще. Нам дається 64-розрядне ціле число без підпису, і нас цікавлять наступні біти: 1.......2.......3.......4.......5.......6.......7.......8....... Зокрема, ми хотіли б перемістити їх на перші вісім позицій: 12345678........................................................ Нас не хвилює значення бітів, вказаних ., і …

3
Чому NaN - NaN == 0,0 з компілятором Intel C ++?
Добре відомо, що NaN поширюються в арифметиці, але я не міг знайти жодних демонстрацій, тому я написав невеликий тест: #include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::numeric_limits<float>::quiet_NaN(); float neg = -qNaN; float sub1 = 6.0f - qNaN; float sub2 = qNaN - 6.0f; float …
300 c++  c  floating-point  ieee-754  icc 


14
MIN і MAX в С
Де вони MINі MAXвизначені в C, якщо вони взагалі? Який найкращий спосіб здійснити їх, максимально безпечно та ввести безпечно? (Розширення компілятора / вбудовані для основних компіляторів бажано.)
299 c  max  min  c-preprocessor 

4
Розмір символу ('a') в C / C ++
Який розмір символів у С та С ++? Наскільки я знаю, розмір char становить 1 байт і для C, і для C ++. В: #include <stdio.h> int main() { printf("Size of char : %d\n", sizeof(char)); return 0; } В C ++: #include <iostream> int main() { std::cout << "Size of …
298 c++  c  types 

9
Покажчики на С: коли використовувати амперсанд та зірочку?
Я тільки починаю з покажчиків, і я трохи розгублений. Я знаю, &означає адресу змінної, яку *можна використовувати перед змінною вказівника, щоб отримати значення об'єкта, на який вказує вказівник. Але все працює інакше, коли ви працюєте з масивами, рядками або коли ви викликаєте функції з копією вказівника змінної. Важко побачити закономірність …
298 c  pointers 

6
Як надрукувати тип int64_t на C
Стандарт C99 має цілі типи з розміром байтів, як int64_t. Я використовую такий код: #include <stdio.h> #include <stdint.h> int64_t my_int = 999999999999999999; printf("This is my_int: %I64d\n", my_int); і я отримую це попередження компілятора: warning: format ‘%I64d’ expects type ‘int’, but argument 2 has type ‘int64_t’ Я спробував: printf("This is my_int: …
298 c  stdint 

26
Легко вимірюйте минулий час
Я намагаюся використовувати час () для вимірювання різних точок моєї програми. Що я не розумію, це чому значення до і після є однаковими? Я розумію, що це не найкращий спосіб профілювати свою програму, я просто хочу побачити, як довго щось триває. printf("**MyProgram::before time= %ld\n", time(NULL)); doSomthing(); doSomthingLong(); printf("**MyProgram::after time= %ld\n", …
297 c++  c  linux  time  measurement 

3
Що таке >>> = оператор у C?
Даний колегою як головоломка, я не можу зрозуміти, як насправді компілюється та запускається ця програма C. Що це за >>>=оператор і дивний 1P1буквал? Я пройшов тестування в Clang та GCC. Немає попереджень і вихід "???" #include <stdio.h> int main() { int a[2]={ 10, 1 }; while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] ) …

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