Как объявить 32-разрядное целое число в C

Если ||, поскольку замена C# ?? не достаточно хороша в Вашем случае, потому что это глотает пустые строки и нули, можно всегда писать собственную функцию:

 function $N(value, ifnull) {
    if (value === null || value === undefined)
      return ifnull;
    return value;
 }

 var whatIWant = $N(someString, 'Cookies!');
71
задан bdonlan 4 August 2009 в 20:30
поделиться

7 ответов

#include <stdint.h>

int32_t my_32bit_int;
109
ответ дан 24 November 2019 в 13:00
поделиться

На мой взгляд, ответ Кори верен для «лучшего», но на практике будет работать и простое «int» (при условии, что вы игнорируете системы с 16-битным int). На этом этапе столько кода зависит от того, является ли int 32-битным, что поставщики систем не собираются его менять.

(См. Также, почему long является 32-битным во многих 64-битных системах и почему у нас есть «long long ".)

Однако одним из преимуществ использования int32_t является то, что вы не усугубляете эту проблему!

11
ответ дан 24 November 2019 в 13:00
поделиться

Вы можете найти копию brg_types.h Брайана Глэдмана, если у вас нет stdint.h .

brg_types.h обнаружит размеры различных целых чисел на вашей платформе и создаст определения типов для общих размеров: 8, 16, 32 и 64 бита.

5
ответ дан 24 November 2019 в 13:00
поделиться

C не особо заботится о точных размерах целочисленных типов, C99 вводит заголовок stdint.h , который, вероятно, лучше всего подходит для вас. Включите это, и вы можете использовать, например, int32_t . Конечно, не все платформы могут это поддерживать.

12
ответ дан 24 November 2019 в 13:00
поделиться

также в зависимости от ваших целевых платформ вы можете использовать автоинструменты для ваша система сборки

она увидит, существует ли stdint.h / inttypes.h, и если они не будут создавать соответствующие typedefs в "config.h"

0
ответ дан 24 November 2019 в 13:00
поделиться

stdint.h - очевидный выбор, но он не обязательно доступен.

Если вы используете переносимую библиотеку, возможно, она уже предоставляет переносимые целые числа фиксированной ширины. Например, SDL имеет Sint32 (S означает «подписанный»), а GLib имеет gint32 .

0
ответ дан 24 November 2019 в 13:00
поделиться

Если stdint.h недоступен для вашей системы, создайте свой собственный. У меня всегда есть файл с именем "types.h", в котором есть определения типов для всех 8-, 16- и 32-битных значений со знаком / без знака.

0
ответ дан 24 November 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: