c- все статьи тега ➜ страница 6


Неопределенное, неопределенное и определяемое реализацией поведение

в чем разница между неопределенным, неопределенным и определяемым реализацией поведением в C и c++? ...

беззнаковый Инт и размер Т

Я замечаю, что современный код C и c++, кажется, использует size_t вместо int/unsigned int практически везде - от параметров для строковых функций C до STL. Мне любопытно, в чем причина этого и какие преимущества это приносит. ...

Что такое "статическая функция"?

вопрос был о простых функциях c, а не c++ static методы, как уточняется в комментариях. Ок, я понимаю, что такое static переменная есть, но что такое ? а почему, если я объявляю функцию, скажем void print_matrix, скажем так a.c (без a.h) и "a.c" - Я "print_matrix@@....) already defined in a.obj", но если я объявлю его как static void print_matrix затем он компилирует? обновление просто чтобы прояснить ситуацию - я знаю в том числе .c плохо, как многие из вас заметили. Я просто делаю это, чтоб ...

Программно определить количество ядер на компьютере

есть ли способ определить, сколько ядер у машины есть из C/C++ независимо от платформы? Если такой вещи не существует, как насчет определения ее для каждой платформы (Windows/*nix/Mac)? ...

Что такое неподписанный символ?

В C / C++, что за unsigned char используется для? Чем он отличается от обычного char? ...

Как инициализировать структуру в соответствии со стандартами языка программирования C

Я хочу инициализировать элемент структуры, разделить объявление и инициализацию. Вот что у меня есть: typedef struct MY_TYPE { boolean flag; short int value; double stuff; } MY_TYPE; void function(void) { MY_TYPE a; ... a = { true, 15, 0.123 } } это способ объявить и инициализировать локальную переменную MY_TYPE в соответствии со стандартами языка программирования C (C89, C90, C99, C11 и др.)? Или есть что-то лучше или хотя бы работает? обновление у меня появился статический эле ...

Fortran легче оптимизировать, чем C для тяжелых вычислений?

время от времени я читаю, что Fortran является или может быть быстрее, чем C для тяжелых вычислений. Это действительно так? Я должен признать, что я едва знаю Fortran, но код Fortran, который я видел до сих пор, не показал, что язык имеет функции, которых нет у C. Если это правда, пожалуйста, скажи мне, почему. Пожалуйста, не говорите мне, какие языки или библиотеки хороши для хруста чисел, я не собираюсь писать приложение или lib для этого, мне просто любопытно. ...

Статическое связывание против динамического связывания

существуют ли какие-либо убедительные причины производительности для выбора статического связывания над динамическим связыванием или наоборот в определенных ситуациях? Я слышал или читал следующее, но я не знаю достаточно по этому вопросу, чтобы ручаться за его правдивость. 1) разница в производительности между статической и динамической компоновки, как правило, незначительна. 2) (1) неверно при использовании компилятора профилирования, который использует данные профиля для оптимизации путей д ...

В чем разница между float и double?

Я читал о разнице между двойной точностью и плавающей запятой одинарной точности. Однако, в большинстве случаев, float и double кажутся взаимозаменяемыми, т. е. использование одного или другого не влияет на результаты. Это действительно так? Когда поплавки и двойники взаимозаменяемы? В чем разница между ними? ...

Почему мы должны так часто набирать структуру в C?

Я видел много программ, состоящих из структур, как показано ниже typedef struct { int i; char k; } elem; elem user; зачем это нужно так часто? Любая конкретная причина или применимая область? ...

Почему rand () + rand () производит отрицательные числа?

я заметил:rand() библиотечная функция когда она вызывается только один раз в цикле, она почти всегда производит положительные числа. for (i = 0; i < 100; i++) { printf("%dn", rand()); } но когда я добавляю два rand() вызовы, генерируемые номера теперь имеют больше отрицательных чисел. for (i = 0; i < 100; i++) { printf("%d = %dn", rand(), (rand() + rand())); } может кто-нибудь объяснить мне, почему я вижу отрицательные числа во втором случае? PS: Я инициализирую семя перед ...

Как вы форматируете unsigned long long int с помощью printf?

#include <stdio.h> int main() { unsigned long long int num = 285212672; //FYI: fits in 29 bits int normalInt = 5; printf("My number is %d bytes wide and its value is %ul. A normal number is %d.n", sizeof(num), num, normalInt); return 0; } выход: My number is 8 bytes wide and its value is 285212672l. A normal number is 0. Я предполагаю, что это неожиданный результат от печати unsigned long long int. Как ты printf() an unsigned long long int? ...

strdup () - что он делает в C?

какова цель strdup() функция в C? ...

Действительно ли умножение и деление с использованием операторов сдвига в C быстрее?

умножение и деление может быть достигнуто с помощью битовых операторов, например i*2 = i<<1 i*3 = (i<<1) + i; i*10 = (i<<3) + (i<<1) и так далее. это на самом деле быстрее сказать (i<<3)+(i<<1) умножить на 10, чем при использовании i*10 напрямую? Есть ли какие-то входные данные, которые не могут быть умножены или разделены таким образом? ...

Объединение C++ и C-как работает #ifdef cplusplus?

Я работаю над проектом, который имеет большое наследие C код. Мы начали писать на C++, с намерением в конечном итоге преобразовать унаследованный код. Я немного смущен тем, как C и C++ взаимодействовать. Я понимаю, что, обернув C код extern "C" компилятор C++ не будет калечить C имена кода, но я не совсем уверен, как это реализовать. Итак, в верхней части каждого C заголовочный файл (после включения ГВ), у нас есть #ifdef __cplusplus extern "C" { #endif а внизу мы пишем #ifdef __cplusplu ...

Почему 0

у меня ниже простая программа: #include <stdio.h> #define INT32_MIN (-0x80000000) int main(void) { long long bal = 0; if(bal < INT32_MIN ) { printf("Failed!!!"); } else { printf("Success!!!"); } return 0; } условие if(bal < INT32_MIN ) всегда истинно. Как это возможно? Он отлично работает, если я изменить макрос: #define INT32_MIN (-2147483648L) может ли кто-нибудь указать на эту проблему? ...

В чем разница между NULL, ' ' и 0

В C, по-видимому, существуют различия между различными значениями нуля -- NULL,NUL и 0. я знаю, что символ ASCII '0' значение 48 или 0x30. The NULL указатель обычно определяется как: #define NULL 0 или #define NULL (void *)0 кроме того, есть NUL символ '' который, кажется, оценить 0 как хорошо. бывают ли случаи, когда эти три значения могут не быть равным? это также верно на 64-битных системах? ...

Как получить каталог, из которого выполняется программа?

существует ли платформа-агностический и файловая система-агностический метод для получения полного пути к каталогу, из которого выполняется программа с использованием C/C++? Не путать с текущим рабочим каталогом. (Пожалуйста, не предлагайте библиотеки, если они не являются стандартными, такими как clib или STL.) (Если нет платформы / файловой системы-агностический метод, предложения, которые работают в Windows и Linux для конкретных файловых систем, также приветствуются.) ...

В чем разница между char * const и const char *?

в чем разница между: char * const и const char * ...

Мин и Макс в C

где MIN и MAX определяется в C, если вообще? каков наилучший способ реализовать их, как можно более обобщенно и безопасно? (Предпочтительны расширения компилятора/встроенные файлы для основных компиляторов.) ...