This article compares a large number of programming languages by tabulating their data types, their expression, statement, and declaration syntax, and some common operating-system interfaces. Conventions of this article Generally, var, , or is how variable names or other non-literal values to be interpreted by the reader are represented. The rest is literal code. Guillemets ( and ) enclose optional sections. indicates a necessary (whitespace) indentation. Note that the tables are not sorted lexicographically ascending by programming-language name by default, and that some programming languages have entries in some tables but not others. Type identifiers Integers The standard constants and can be used to determine how many s and s can be usefully prefixed to and . The actual sizes of , , and are available as the constants , , and etc. Commonly used for characters. The ALGOL 68, C and C++ languages do not specify the exact width of the integer types , , , and (C99, C++11) , so they are implementation-dependent. In C and C++ , , and types are required to be at least 16, 32, and 64 bits wide, respectively, but can be more. The type is required to be at least as wide as and at most as wide as , and is typically the width of the word size on the processor of the machine (i.e. on a 32-bit machine it is often 32 bits wide; on 64-bit machines it is sometimes 64 bits wide). C99 and C++11 also define the exact-width types in the stdint.h header. See C syntax#Integral types for more information. In addition the types and are defined in relation to the address size to hold unsigned and signed integers sufficiently large to handle array indices and the difference between pointers. Perl 5 does not have distinct types. Integers, floating point numbers, strings, etc. are all considered "scalars". PHP has two arbitrary-precision libraries. The BCMath library just uses strings as datatype. The GMP library uses an internal "resource" type. The value of is provided by the intrinsic function. ALGOL 68G's runtime option can set precision for s to the required "number" significant digits. The standard constants and can be used to determine actual precision. COBOL allows the specification of a required precision and will automatically select an available type capable of representing the specified precision. "", for example, would require a signed variable of four decimal digits precision. If