Вопросы с тегом «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; Gfx.FogColor.A = …

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........................................................ Нас не волнует значение битов, …

14
MIN и MAX в C
Где MINи MAXопределены в C, если вообще? Каков наилучший способ реализовать их как можно более обобщенно и безопасно? (Расширения / встроенные компиляторы для основных компиляторов предпочтительнее.)
301 c  max  min  c-preprocessor 

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 


4
Размер символа ('a') в C / C ++
Каков размер символов в C и C ++? Насколько я знаю, размер символа составляет 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 char …
299 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 …
298 c  stdint 

26
Легко измерить прошедшее время
Я пытаюсь использовать время () для измерения различных точек моей программы. Что я не понимаю, так это то, почему значения в до и после одинаковы? Я понимаю, что это не лучший способ для профилирования моей программы, я просто хочу посмотреть, как долго что-то займет. printf("**MyProgram::before time= %ld\n", time(NULL)); doSomthing(); doSomthingLong(); …
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.