В [1 117] C:
void foo()
означает "функцию foo
, взятие неуказанного количества аргументов неуказанного типа" void foo(void)
означает "функцию foo
взятие никаких аргументов" В [1 118] C++ :
void foo()
означает "функцию foo
, взятие никаких аргументов" void foo(void)
означает "функцию foo
взятие никаких аргументов" Путем записи foo(void)
, поэтому, мы достигаем той же интерпретации через оба языка и делаем наши заголовки многоязычными (хотя мы обычно должны делать еще некоторые вещи к заголовкам для создания их действительно межъязыковыми; а именно, оберните их в extern "C"
, если мы компилируем C++).
int официально является «интегральным типом, который больше или равен размеру типа short int и короче или равен размеру типа long». Он может быть любого размера и зависит от реализации.
Это 4 байта (32 бита) в текущей реализации компилятора Microsoft (это зависит от компилятора, а не от платформы). Вы можете увидеть это на странице Fundamental Types (C ++) MSDN (внизу).
Размеры основных типов
Type Size ======================= ========= int, unsigned int 4 байта
это зависит от платформы, но легко узнать:
sizeof(int)*8
С точки зрения кода, вы всегда можете определить размер в битах любого типа с помощью:
#include <windows.h>
#include <limits.h>
sizeof (BOOL) * CHAR_BIT
Однако с семантической точки зрения количество битов в BOOL предполагается равным единице . Другими словами, все ненулевые значения BOOL должны обрабатываться одинаково, включая значение TRUE . FALSE (который равен 0) - единственное другое значение, которое должно иметь особое значение. Чтобы строго следовать этому правилу, нужно немного подумать. Например, чтобы преобразовать BOOL в char, вам нужно сделать следующее:
Это зависит от реализации. (Даже в той же ОС.) Используйте sizeof (int)
, чтобы найти размер int в реализации, которую вы сейчас используете. Вам никогда не следует жестко кодировать это в вашей программе на C.
А еще лучше использовать sizeof (BOOL)
, чтобы вам не приходилось беспокоиться, если MS когда-либо изменит свое определение BOOL.
Они оба имеют размер 32 бита (4 байта).
В языках, которые имеют собственный логический тип, логические значения обычно имеют размер 8 бит (1 байт), а не 1 бит, как я когда-то думал.
Он такой большой, как говорит sizeof (int)?
(Это в байтах, умножьте его на 8.)