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

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

1
Почему моя программа застревает во время работы программы mandelbrot brainf ***?
Я хотел улучшить свои навыки C, поэтому я ищу идеи некоторых программ. Кто-то предлагает создать простой интерпретатор Brainf ***, а затем компилятор. И вот я здесь. Я создал интерпретатор, и он работает, как и ожидалось, за исключением программы Мандельброта: A mandelbrot set fractal viewer in brainfuck written by Erik Bosman …

2
Что такое инкапсуляция во время компиляции в C?
Когда я исследовал преимущества C над C ++, я наткнулся на этот параграф: Стандартным способом инкапсуляции в C является предварительное объявление структуры и доступ к ее данным только через функции. Этот метод также создает инкапсуляцию времени компиляции. Инкапсуляция времени компиляции позволяет нам изменять элементы структур данных без перекомпиляции клиентского кода …
9 c 

6
C указатель на объявление массива с побитовым и оператором
Я хочу понять следующий код: //... #define _C 0x20 extern const char *_ctype_; //... __only_inline int iscntrl(int _c) { return (_c == -1 ? 0 : ((_ctype_ + 1)[(unsigned char)_c] & _C)); } Он происходит из файла ctype.h из исходного кода операционной системы obenbsd. Эта функция проверяет, является ли символ …
9 c  openbsd 

3
foo (void *) против foo (void *)
Говоря функционально и синтаксически, есть ли разница между функцией, прототип которой int foo(void)и int foo(void *)? Я знаю разницу между, например, int bar(int)и int bar(int *)- один из них ищет int, а другой ищет указатель int. Ведет ли voidсебя так же?

3
+ (+ k--) выражение в C
Я видел этот вопрос в тесте, в котором мы должны сообщить вывод следующего кода. #include<stdio.h> int main(){ int k = 0; while(+(+k--)!=0) k=k++; printf("%d\n", k); return 0; } Выход есть -1. Я не уверен, почему это ответ, хотя. Что означает выражение +(+k--)в C?
9 c 

4
Как работает sizeof с разыменованием указателя на массив?
Здесь у меня есть указатель ptrна массив arrиз 4 целых чисел. ptrуказывает на весь массив. ptr[0]или *ptrуказывает на первый элемент массива, поэтому добавление 1 к ptr[0]дает адрес второго элемента массива. Я не могу понять, почему использование sizeof(ptr[0])дает размер всего массива, 16 байтов, а не размер только первого элемента, 4 байта, …
9 c  arrays  pointers 

1
Являются ли инициализация объекта в Java «Foo f = new Foo ()» по существу такой же, как использование malloc для указателя в C?
Я пытаюсь понять реальный процесс создания объектов в Java - и я предполагаю, что другие языки программирования. Было бы неправильно предполагать, что инициализация объекта в Java такая же, как и при использовании malloc для структуры в C? Пример: Foo f = new Foo(10); typedef struct foo Foo; Foo *f = …

4
Почему компиляторы C оптимизируют переключение и если по-другому
Недавно я работал над личным проектом, когда наткнулся на странную проблему. В очень узком цикле у меня есть целое число со значением от 0 до 15. Мне нужно получить -1 для значений 0, 1, 8 и 9 и 1 для значений 4, 5, 12 и 13. Я повернулся к Godbolt, …

2
Почему% f печатает большие значения, когда константы с плавающей точкой передаются вместо переменных?
В данной программе, почему я получил разные результаты для каждого из printfs? #include <stdio.h> int main() { float c = 4.4e10; printf("%f\n", c); printf("%f\n", 4.4e10); return 0; } И это показывает следующий вывод: 44000002048.000000 44000000000.000000
9 c 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.