This article needs additional citations for verification .(February 2009) |
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.
Generally, var, var, or var 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. Tab ↹ indicates a necessary (whitespace) indentation.
The tables are not sorted lexicographically ascending by programming language name by default, and that some languages have entries in some tables but not others.
| 8 bit (byte) | 16 bit (short integer) | 32 bit | 64 bit (long integer) | Word size | Arbitrarily precise (bignum) | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Signed | Unsigned | Signed | Unsigned | Signed | Unsigned | Signed | Unsigned | Signed | Unsigned | ||
| Ada [1] | range-2**7..2**7-1 [j] | range0..2**8-1 [j] or mod2**8 [k] | range-2**15..2**15-1 [j] | range0..2**16-1 [j] or mod2**16 [k] | range-2**31..2**31-1 [j] | range0..2**32-1 [j] or mod2**32 [k] | range-2**63..2**63-1 [j] | mod2**64 [k] | Integer [j] | range0..2**Integer'Size-1 [j] or modInteger'Size [k] | — |
| ALGOL 68 (variable-width) | short short int [c] | — | short int [c] | — | int [c] | — | long int [c] | — | int [c] | — | long long int [a] [g] |
bytes and bits | |||||||||||
| C (C99 fixed-width) | int8_t | uint8_t | int16_t | uint16_t | int32_t | uint32_t | int64_t | uint64_t | intptr_t [c] | size_t [c] | — |
| C++ (C++11 fixed-width) | |||||||||||
| C (C99 variable-width) | signed char | unsigned char | short [c] | unsigned short [c] | long [c] | unsigned long [c] | long long [c] | unsigned long long [c] | int [c] | unsigned int [c] | |
| C++ (C++11 variable-width) | |||||||||||
| Objective-C (Cocoa) | signed char or int8_t | unsigned char or uint8_t | short or int16_t | unsigned short or uint16_t | int or int32_t | unsigned int or uint32_t | long long or int64_t | unsigned long long or uint64_t | NSInteger or long | NSUInteger or unsigned long | |
| C# | sbyte | byte | short | ushort | int | uint | long | ulong | IntPtr | UIntPtr | System.Numerics.(.NET 4.0) |
| Java | byte | — | char [b] | — | — | — | — | java.math. | |||
| Go | int8 | uint8 or byte | int16 | uint16 | int32 | uint32 | int64 | uint64 | int | uint | big.Int |
| Rust | i8 | u8 | i16 | u16 | i32 | u32 | i64 | u64 | isize | usize | — |
| Swift | Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32 | Int64 | UInt64 | Int | UInt | |
| D | byte | ubyte | short | ushort | int | uint | long | ulong | — | — | BigInt |
| Common Lisp [2] | (signed-byte 8) | (unsigned-byte 8) | (signed-byte 16) | (unsigned-byte 16) | (signed-byte 32) | (unsigned-byte 32) | (signed-byte 64) | (unsigned-byte 64) | bignum | ||
| Scheme | |||||||||||
| ISLISP [3] | bignum | ||||||||||
| Pascal (FPC) | shortint | byte | smallint | word | longint | longword | int64 | qword | integer | cardinal | — |
| Visual Basic | — | Byte | Integer | — | Long | — | — | — | — | ||
| Visual Basic .NET | SByte | Short | UShort | Integer | UInteger | Long | ULong | System.Numerics(.NET 4.0) | |||
| FreeBasic | Byte or Integer<8> | UByte or UInteger<8> | Short or Integer<16> | UShort or UInteger<16> | Long or Integer<32> | ULong or UInteger<32> | LongInt or Integer<64> | ULongInt or UInteger<64> | Integer | UInteger | — |
| Python 2.x | — | — | — | — | int | — | long | ||||
| Python 3.x | — | — | — | — | — | int | |||||
| S-Lang | — | — | — | — | — | — | |||||
| Fortran | INTEGER(KIND=n) [f] | — | INTEGER(KIND=n) [f] | — | INTEGER(KIND=n) [f] | — | INTEGER(KIND=n) [f] | — | |||
| PHP | — | — | int [m] | — | int [m] | — | — | [e] | |||
| Perl 5 | — [d] | — [d] | — [d] | — [d] | — [d] | Math::BigInt | |||||
| Raku | int8 | uint8 | int16 | uint16 | int32 | uint32 | int64 | uint64 | Int | — | |
| Ruby | — | — | — | — | Fixnum | — | Bignum | ||||
| Erlang [n] | — | — | — | — | integer() | — | integer() [o] | ||||
| Scala | Byte | — | Short | Char [l] | Int | — | Long | — | — | — | scala.math.BigInt |
| Seed7 | — | — | — | — | — | — | integer | — | — | — | bigInteger |
| Smalltalk | — | — | — | — | SmallInteger [i] | — | LargeInteger [i] | ||||
| Windows PowerShell | — | — | — | — | — | — | |||||
| OCaml | — | — | int32 | — | int64 | — | int or nativeint | open Big_int;; or big_int | |||
| F# | sbyte | byte | int16 | uint16 | int32 or int | uint32 | uint64 | nativeint | unativeint | bigint | |
| Standard ML | — | Word8.word | — | Int32.int | Word32.word | Int64.int | Word64.word | int | word | LargeInt.int orIntInf.int | |
| Haskell (GHC) | «import Int» or Int8 | «import Word» or Word8 | «import Int» or Int16 | «import Word» or Word16 | «import Int» or Int32 | «import Word» or Word32 | «import Int» or Int64 | «import Word» or Word64 | Int | «import Word» or Word | Integer |
| Eiffel | INTEGER_8 | NATURAL_8 | INTEGER_16 | NATURAL_16 | INTEGER_32 | NATURAL_32 | INTEGER_64 | NATURAL_64 | INTEGER | NATURAL | — |
| COBOL [h] | BINARY-CHAR «SIGNED» | BINARY-CHAR UNSIGNED | BINARY-SHORT «SIGNED» | BINARY-SHORT UNSIGNED | BINARY-LONG «SIGNED» | BINARY-LONG UNSIGNED | BINARY-DOUBLE «SIGNED» | BINARY-DOUBLE UNSIGNED | — | — | — |
| Mathematica | — | — | — | — | — | Integer | |||||
| Wolfram Language | — | — | — | — | — | Integer | |||||
int shorts and int lengths can be used to determine how many shorts and longs can be usefully prefixed to short int and long int. The actual sizes of short int, int, and long int are available as the constants short max int, max int, and long max int etc.short, int, long, and (C99, C++11) long long, so they are implementation-dependent. In C and C++ short, long, and long long types are required to be at least 16, 32, and 64 bits wide, respectively, but can be more. The int type is required to be at least as wide as short and at most as wide as long, 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 [ citation needed ] also define the [u]intN_t exact-width types in the stdint.h header. See C syntax#Integral types for more information. In addition the types size_t and ptrdiff_t 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.n is provided by the SELECTED_INT_KIND [4] intrinsic function.--precision "number" can set precision for long long ints to the required "number" significant digits. The standard constants long long int width and long long max int can be used to determine actual precision.PIC S9999", for example, would require a signed variable of four decimal digits precision. If specified as a binary field, this would select a 16-bit signed type on most platforms.range1..Integer'Last) and Natural (range0..Integer'Last). Short_Short_Integer (8 bits), Short_Integer (16 bits) and Long_Integer (64 bits) are also commonly predefined, but not required by the Ada standard. Runtime checks can be disabled if performance is more important than integrity checks.int in PHP has the same width as long type in C has on that system. [c] | Single precision | Double precision | Other precision | Processor dependent | |
|---|---|---|---|---|
| Ada [1] | Float | Long_Float | — | |
| ALGOL 68 | real [a] | long real [a] | short real, long long real, etc. [d] | |
| C | float [b] | double | long double [f] | |
| C++ (STL) | ||||
| Objective-C (Cocoa) | CGFloat | |||
| C# | float | — | ||
| Java | ||||
| Go | float32 | float64 | ||
| Rust | f32 | f64 | f16, f128 | |
| Swift | Float or Float32 | Double or Float64 | Float80 [g] | CGFloat |
| D | float | double | real | |
| Common Lisp | single-float | double-float | float, short-float, long-float | |
| Scheme | ||||
| ISLISP | ||||
| Pascal (FPC) | single | double | real | |
| Visual Basic | Single | Double | — | |
| Visual Basic .NET | ||||
| Xojo | ||||
| Python | — | float | ||
| JavaScript | Number [7] | — | ||
| S-Lang | ||||
| Fortran | REAL(KIND = n) [c] | |||
| PHP | float | |||
| Perl | ||||
| Raku | num32 | num64 | Num | |
| Ruby | — | Float | — | |
| Scala | Float | Double | ||
| Seed7 | — | float | ||
| Smalltalk | Float | Double | ||
| Windows PowerShell | ||||
| OCaml | — | float | — | |
| F# | float32 | |||
| Standard ML | — | real | ||
| Haskell (GHC) | Float | Double | ||
| Eiffel | REAL_32 | REAL_64 | ||
| COBOL | FLOAT-BINARY-7 [e] | FLOAT-BINARY-34 [e] | FLOAT-SHORT, FLOAT-LONG, FLOAT-EXTENDED | |
| Mathematica | — | — | Real | |
real shorts and real lengths can be used to determine how many shorts and longs can be usefully prefixed to short real and long real. The actual sizes of short real, real, and long real are available as the constants short max real, max real and long max real etc. With the constants short small real, small real and long small real available for each type's machine epsilon.n is provided by the SELECTED_REAL_KIND [8] intrinsic function.--precision "number" can set precision for long long reals to the required "number" significant digits. The standard constants long long real width and long long max real can be used to determine actual precision.double on many implementations.long double in C languages.| Integer | Single precision | Double precision | Half and Quadruple precision etc. | |
|---|---|---|---|---|
| Ada [1] | — | Complex [b] | Complex [b] | Complex [b] |
| ALGOL 68 | — | compl | long compl etc. | short compl etc. and long long compl etc. |
| C (C99) [9] | — | float complex | double complex | — |
| C++ (STL) | — | std::complex<float> | std::complex<double> | |
| C# | — | — | System.Numerics.Complex(.NET 4.0) | |
| Java | — | — | — | |
| Go | — | complex64 | complex128 | |
| D | — | cfloat | cdouble | |
| Objective-C | — | — | — | |
| Common Lisp | (complex integer) | (complex single-float) | (complex double-float) | complex |
| Scheme | — | |||
| Pascal | — | — | ||
| Visual Basic | — | — | ||
| Visual Basic .NET | — | — | System.Numerics.Complex(.NET 4.0) | |
| Perl | Math::Complex | |||
| Raku | complex64 | complex128 | Complex | |
| Python | complex | — | ||
| JavaScript | — | — | ||
| S-Lang | — | — | ||
| Fortran | COMPLEX(KIND = n) [a] | |||
| Ruby | Complex | — | Complex | |
| Scala | — | — | — | |
| Seed7 | — | — | complex | |
| Smalltalk | Complex | Complex | Complex | |
| Windows PowerShell | — | — | ||
| OCaml | — | — | Complex.t | |
| F# | System.Numerics.Complex(.NET 4.0) | |||
| Standard ML | — | — | — | |
| Haskell (GHC) | — | Complex.Complex Float | Complex.Complex Double | |
| Eiffel | — | — | — | |
| COBOL | — | — | — | |
| Mathematica | Complex | — | — | Complex |
| Text | Boolean | Enumeration | Object/Universal | ||
|---|---|---|---|---|---|
| Character | String [a] | ||||
| Ada [1] | Character | String, Bounded_String, Unbounded_String | Boolean | (item1, item2, ...) | tagged null record |
| ALGOL 68 | char | string, bytes | bool, bits | N/A - User defined | N/A |
| C (C99) | char, wchar_t | N/A | bool [b] | enum «name» { item1, item2, ... }; | void * |
| C++ (STL) | «std::»string | ||||
| Objective-C | unichar | NSString * | BOOL | id | |
| C# | char | string | bool | enum name { item1« = value», item2« = value», ... } | object |
| Java | String | boolean | enum name { item1, item2, ... } | Object | |
| Go | byte, rune | string | bool | const ( | interface{} |
| Rust | char | String | bool | enum name { item1« = value», item2« = value», ... } | std::any::Any |
| Swift | Character | String | Bool | enum name { case item1, item2, ... } | Any |
| D | char | string | bool | enum name { item1, item2, ... } | std.variant.Variant |
| Common Lisp | character | string | boolean | (member item1item2...) | t |
| Scheme | |||||
| ISLISP | |||||
| Pascal (ISO) | char | N/A | boolean | ( item1, item2, ... ) | N/A |
| Object Pascal (Delphi) | string | variant | |||
| Visual Basic | N/A | String | Boolean | Enum name | Variant |
| Visual Basic .NET | Char | Object | |||
| Xojo | N/A | Object or Variant | |||
| Python | N/A [d] | str | bool | <syntaxhighlight lang="python" class="" style="border:none; padding: 0px 0px; color:var(--color-base, #202122); background:transparent; " inline="1">from enum import Enum</syntaxhighlight> <syntaxhighlight lang="python" class="" style="border:none; padding: 0px 0px; color:var(--color-base, #202122); background:transparent; " inline="1">class Name(Enum):</syntaxhighlight> ''item<sub>1</sub>'' = ''value'' ''item<sub>2</sub>'' = ''value'' ''...'' | object |
| JavaScript | N/A [d] | String | Boolean | Object | |
| S-Lang | |||||
| Fortran | CHARACTER(LEN=*) | CHARACTER(LEN=:),allocatable | LOGICAL(KIND=n) [f] | CLASS(*) | |
| PHP | N/A [d] | string | bool | (type declaration omitted) | |
| Perl | N/A [d] | UNIVERSAL | |||
| Raku | Char | Str | Bool | enum name<item1 item2 ...>enum name «:item1(value) :item2(value) ..» | Mu |
| Ruby | N/A [d] | String | Object [c] | Object | |
| Scala | Char | String | Boolean | object name extends Enumeration { | Any |
| Seed7 | char | string | boolean | const type: name is new enum | |
| Windows PowerShell | |||||
| OCaml | char | string | bool | N/A [e] | N/A |
| F# | type name = item1 = value|item2 = value|... | obj | |||
| Standard ML | N/A [e] | N/A | |||
| Haskell (GHC) | Char | String | Bool | N/A [e] | N/A |
| Eiffel | CHARACTER | STRING | BOOLEAN | N/A | ANY |
| COBOL | PIC X | PIC X(string length) or PIC X«X...» | PIC 1«(number of digits)» or PIC 1«1...» | N/A | OBJECT REFERENCE |
| Mathematica | N/A [d] | String | N/A | ||
TrueClass evaluates to true and everything in FalseClass evaluates to false.n is provided by the SELECTED_INT_KIND [4] intrinsic function.| fixed size array | dynamic size array | |||
|---|---|---|---|---|
| one-dimensional array | multidimensional array | one-dimensional array | multidimensional array | |
| Ada [1] | array (<first> ..<last>) of<type>or array (<discrete_type>) of<type> | array (<first1> ..<last1>,<first2> ..<last2>, ...) of<type>or array (<discrete_type1>,<discrete_type2>, ...) of<type> | array (<discrete_type> range <>) of<type> | array (<discrete_type1> range <>, <discrete_type2> range <>, ...) of<type> |
| ALGOL 68 | [first:last]or simply: [size] | [first1:last1, first2:last2]or [first1:last1][first2:last2]etc. | flex[first:last]or simply: flex[size] | flex[first1:last1, first2:last2]or flex[first1:last1] |
| C (C99) | type name[size] [a] | type name[size1][size2] [a] | type *nameor within a block: int n = ...; type name[n] | |
| C++ (STL) | «std::»array<type, size>(C++11) | «std::»vector<type> | ||
| C# | type[] | type[,,...] | Systemor System | |
| Java | type[] [b] | type[][]... [b] | ArrayList or ArrayList<type> | |
| D | type[size] | type[size1][size2] | type[] | |
| Go | [size]type | [size1][size2]...type | []type | [][]type |
| Rust | [type; size] | [[type; size1]; size2] | Vec<type> | Vec<Vec<type>> |
| Swift | [type] or Array<type> | [[type]] or Array<Array<type>> | ||
| Objective-C | NSArray | NSMutableArray | ||
| JavaScript | — | — | Array [d] | |
| Common Lisp | (simple-arraytype(dimension)) | (simple-arraytype(dimension1dimension2)) | (arraytype(dimension)) | (arraytype(dimension1dimension2)) |
| Scheme | ||||
| ISLISP | ||||
| Pascal | array[first..last] of type [c] | array[first1..last1] of array[first2..last2] ... of type [c] or array[first1..last1, first2..last2, ...] of type [c] | — | — |
| Object Pascal (Delphi) | array of type | array of array ... of type | ||
| Visual Basic | Dim x(last) As type | Dim x(last1, last2,...) As type | ||
| Visual Basic .NET | type() | type(,,...) | Systemor System | |
| Python | list | |||
| S-Lang | x = type[size]; | x = type[size1, size2, ...]; | ||
| Fortran | type :: name(size) | type :: name(size1, size2,...) | type, ALLOCATABLE :: name(:) | type, ALLOCATABLE :: name(:,:,...) |
| PHP | array | |||
| Perl | ||||
| Raku | Array[type] or Array of type | |||
| Ruby | x = Array.new(size1){ Array.new(size2) } | Array | ||
| Scala | Array[type] | Array[...[Array[type]]...] | ArrayBuffer[type] | |
| Seed7 | array typeor array [idxType] type | array array typeor array [idxType] array [idxType] type | array typeor array [idxType] type | array array typeor array [idxType] array [idxType] type |
| Smalltalk | Array | OrderedCollection | ||
| Windows PowerShell | type[] | type[,,...] | ||
| OCaml | type array | type array ... array | ||
| F# | type []or type array | type [,,...] | Systemor System | |
| Standard ML | type vector or type array | |||
| Haskell (GHC) | | | ||
| COBOL | level-number type OCCURS size «TIMES». | one-dimensional array definition... | level-number type OCCURS min-size TO max-size [e] | — |
sizeof and & operators), values of array types in C are automatically converted to a pointer of its first argument. See C syntax#Arrays for further details of syntax and pointer operations.type x[] works in Java, however type[] x is the preferred form of array declaration.DEPENDING ON clause in COBOL does not create a true variable length array and will always allocate the maximum size of the array.| Simple composite types | Algebraic data types | Unions | ||
|---|---|---|---|---|
| Records | Tuple expression | |||
| Ada [1] | type name is «abstract» «tagged» «limited» [record | N/A | Any combination of records, unions, and enumerations (as well as references to those, enabling recursive types). | type name (variation : discrete_type) is record |
| ALGOL 68 | struct (modename «fieldname», ...); | Required types and operators can be user-defined | union (modename, ...); | |
| C (C99) | struct «name» {type name;...}; | N/A | N/A | union {type name;...}; |
| Objective-C | ||||
| C++ | struct «name» {type name;...}; [b] | «std::»tuple<type1..typen> | ||
| C# | struct name {type name;...} | (val1, val2, ... ) | N/A | |
| Java | N/A [a] | |||
| JavaScript | N/A | |||
| D | struct name {type name;...} | std.variant.Algebraic!(type,...) | union {type name;...} | |
| Go | struct { | |||
| Rust | struct name {name: type, ...} | (val1, val2, ... ) | enum name { Foo(types), ...} | union name {name: type, ...} |
| Swift | struct name { | («name1:» val1, «name2:» val2, «name3:» val3, ... ) | enum name { case Foo«(types)» case Bar «(types)» ... } | |
| Common Lisp | (defstructnameslot-name(slot-nameinitial-value)(slot-nameinitial-value:typetype)...) | (cons val1 val2) [c] | ||
| Scheme | N/A | |||
| ISLISP | ||||
| Pascal | record | N/A | N/A | record |
| Visual Basic | ||||
| Visual Basic .NET | Structure name | (val1, val2, ... ) | ||
| Python | N/A [a] | «(»val1, val2, val3, ... «)» | N/A | |
| S-Lang | struct {name [=value], ...} | |||
| Fortran | TYPE name | |||
| PHP | N/A [a] | |||
| Perl | N/A [d] | N/A | ||
| Raku | N/A [a] | |||
| Ruby | OpenStruct.new({:name=>value}) | |||
| Scala | case class name(«var» name: type, ...) | (val1, val2, val3, ... ) | abstract class nameor abstract class nameor a combination of case classes and case objects | |
| Windows PowerShell | ||||
| OCaml | type name = {«mutable» name : type;...} | «(»val1, val2, val3, ... «)» | type name = Foo «of type» |Bar «of type» |... | N/A |
| F# | ||||
| Standard ML | type name = {name : type,...} | (val1, val2, val3, ... ) | datatype name = Foo «of type» |Bar «of type» |... | |
| Haskell | data Name = Constr {name :: type,...} | data Name = Foo «types» |Bar «types» |... | ||
| COBOL | | N/A | N/A | name REDEFINES variable type. |
structs in C++ are actually classes, but have default public visibility and are also POD objects. C++11 extended this further, to make classes act identically to POD objects in many more cases.| variable | constant | type synonym | |
|---|---|---|---|
| Ada [1] | identifier : type« := initial_value» [e] | identifier : constant type := final_value | subtype identifier is type |
| ALGOL 68 | modename name« := initial_value»; | modename name = value; | mode synonym = modename; |
| C (C99) | type name« = initial_value»; | enum{ name = value }; | typedef type synonym; |
| Objective-C | |||
| C++ | const type name = value; | ||
| C# | type name1« = initial_value», name2« = initial_value», ...;or var name = initial_value; | const type name = value, name = value, ...;or readonly type name = value, name = value, ... ; | using synonym = type; |
| D | type name« = initial_value»;or auto name = value; | const type name = value;or immutable type name = value; | alias type synonym; |
| Java | type name« = initial_value»; | final type name = value; | — |
| JavaScript | var name« = initial_value»; orlet name« = initial_value»; (since ECMAScript 2015) | const name = value; (since ECMAScript 2015) | |
| Go | var name type« = initial_value»or name := initial_value | const name «type» = value | type synonym type |
| Racket | (define name expression) | ||
| Rust [f] | let mut name«: type»« = initial_value»;static mut NAME: type = value; | let name«: type»« = initial_value»;const NAME: type = value;static NAME: type = value; | type synonym = typename; |
| Swift | var name «: type»« = initial_value» | let name «: type» = value | typealias synonym = type |
| Common Lisp | (defparameter name initial-value)or (defvar name initial-value) | (defconstant name value) | (deftype synonym () 'type) |
| Scheme | (define name initial_value) | ||
| ISLISP | (defglobal name initial_value)or (defdynamic name initial_value) | (defconstant name value) | — |
| Pascal [a] | name: type« = initial_value» | name = value | synonym = type |
| Visual Basic | Dim name «As type» | See notes to left. Constants use the same syntax, and:
| |
| Visual Basic .NET [10] | The variable declaration syntax of VB.NET is unusually difficult to precisely describe. Given that there exist the identifier suffixes ("modifiers"):
and that
valid declaration statements are of the form
and for which, for each
If | Imports synonym = type | |
| Xojo | Dim name «As type»« = initial_value» | — | |
| Python | name«: type» = initial_value | — | synonym = type [b] |
| CoffeeScript | name = initial_value | ||
| S-Lang | name = initial_value; | typedef struct {...} typename | |
| Fortran | type :: name | type, PARAMETER :: name = value | |
| PHP | $name = initial_value; | define("name", value); | — |
| Perl | «my» $name« = initial_value»; [c] | use constant name => value; | |
| Raku | «my «type»» $name« = initial_value»; [c] | «my «type»» constant name = value; | ::synonym ::= type |
| Ruby | name = initial_value | Name = value | synonym = type [b] |
| Scala | var name«: type» = initial_value | val name«: type» = value | type synonym = type |
| Windows PowerShell | «[type]» $name = initial_value | — | — |
| Bash shell | name=initial_value | — | — |
| OCaml | let name« : type ref» = ref value [d] | let name «: type» = value | type synonym = type |
| F# | let mutable name «: type» = value | ||
| Standard ML | val name «: type ref» = ref value [d] | val name «: type» = value | |
| Haskell | «name::type;» name = value | type Synonym = type | |
| Forth | VARIABLE name (in some systems use value VARIABLE name instead) | value CONSTANT name | |
| COBOL | level-number name type clauses. | «0»1 name CONSTANT «AS» value. | level-number name type clauses «IS» TYPEDEF. |
| Mathematica | name=initial_value | — | — |
! and := operators, respectively.let or let mut variable and it is never assigned to later, there is an "unused variable" warning. If no value is provided for a const or static or static mut variable, there is an error. There is a "non-upper-case globals" error for non-uppercase const variables. After it is defined, a static mut variable can only be assigned to in an unsafe block or function.| if | else if | select case | conditional expression | |
|---|---|---|---|---|
| Ada [1] | if condition then | if condition1 then | case expression is | (if condition1 thenor (case expression is |
| Seed7 | if condition then | if condition1 then | case expression of | |
| Modula-2 | if condition then | if condition1 then | case expression of | |
| ALGOL 68 | if condition then statements «else statements» fi | if condition then statements elif condition then statements fi | case switch in statements, statements«,... out statements» esac | ( condition | valueIfTrue | valueIfFalse ) |
| ALGOL 68 (brief form) | ( condition | statements «| statements» ) | ( condition | statements |: condition | statements ) | ( variable | statements,... «| statements» ) | |
| APL | :If condition | :If condition | :Select expression | {condition:valueIfTrue ⋄ valueIfFalse} |
| C (C99) | if (condition) instructionsinstructions can be a single statement or a block in the form of: { statements } | if (condition) instructionsor if (condition) instructions | switch (variable) { | condition ? valueIfTrue : valueIfFalse |
| Objective-C | ||||
| C++ (STL) | ||||
| D | ||||
| Java | ||||
| JavaScript | ||||
| PHP | ||||
| C# | if (condition) instructions
| if (condition) instructions | switch (variable)All non-empty cases must end with a | condition ? valueIfTrue : valueIfFalse |
| Windows PowerShell | if (condition) instruction | if (condition) { instructions } | switch (variable) { case1{instructions «break;» } ... «default { instructions }»} | |
| Go | if condition {instructions} | if condition {instructions}or switch { | switch variable { | |
| Swift | if condition {instructions} | if condition {instructions} | switch variable { | |
| Perl | if (condition) {instructions}or unless (notcondition) {instructions} | if (condition) {instructions}or unless (notcondition) {instructions} | use feature "switch"; | condition ? valueIfTrue : valueIfFalse |
| Racket | (when testexpression expressions)or (unless condition expressions) | (cond [testexpression expressions] [testexpression expressions]... [else expressions]) | (case expression [(case1) expressions] [(case2) expressions]... [else expressions]) | (if testexpression expressioniftrue expressioniffalse) |
| Raku | if condition {instructions}or unless notcondition {instructions} | if condition {instructions} | given variable { | condition ?? valueIfTrue !! valueIfFalse |
| Ruby | if condition | if condition | case variable | condition ? valueIfTrue : valueIfFalse |
| Scala | if (condition) {instructions} | if (condition) {instructions} | expression match { [b] | if (condition) valueIfTrue else valueIfFalse |
| Smalltalk | condition ifTrue: | condition ifTrue: trueBlock ifFalse: falseBlock | ||
| Common Lisp | (when conditionor (unless conditionor (if condition | (cond (condition1 instructions) | (case expression | (if test then else)or (cond (test1 value1) (test2 value2) ...)) |
| Scheme | (when condition instructions)or (if condition (begin instructions) «(begin instructions)») | (cond (condition1 instructions) (condition2 instructions) ... «(else instructions)») | (case (variable) ((case1) instructions) ((case2) instructions) ... «(else instructions)») | (if condition valueIfTrue valueIfFalse) |
| ISLISP | (if condition | (cond (condition1 instructions) | (case expression | (if condition valueIfTrue valueIfFalse) |
| Pascal | if condition then begin [c] | if condition then begin [c] | case variable of [c] | |
| Visual Basic | If condition ThenSingle-line, when instructions are instruction1 : instruction2 : ...:If condition Then instructions «Else instructions» | If condition ThenSingle-line: See note about C-like languages; the Else clause of a single-line If statement can contain another single-line If statement. | Select« Case» variable | IIf(condition, valueIfTrue, valueIfFalse) |
| Visual Basic .NET | If(condition, valueIfTrue, valueIfFalse) | |||
| Xojo | ||||
| Python [a] | if condition : | if condition : | Python 3.10+:match variable: | Python 2.5+:valueIfTrue if condition else valueIfFalse |
| S-Lang | if (condition) { instructions } «else { instructions }» | if (condition) { instructions } else if (condition) { instructions } ... «else { instructions }» | switch (variable) { case case1: instructions } { case case2: instructions } ... | |
| Fortran | IF (condition) THEN | IF (condition) THEN | SELECT CASE(variable) | |
| Forth | condition IF instructions « ELSE instructions» THEN | condition IF instructions ELSE condition IF instructions THEN THEN | value CASE | condition IF valueIfTrue ELSE valueIfFalse THEN |
| OCaml | if condition then begin instructions end «else begin instructions end» | if condition then begin instructions end else if condition then begin instructions end ... «else begin instructions end» | match value with [b] | if condition then valueIfTrue else valueIfFalse |
| F# | Lightweight syntax mode: Either on a single line or with indentation as shown below: | Lightweight syntax mode: Either on a single line or with indentation as shown below: if condition thenVerbose syntax mode: Same as Standard ML. | ||
| Standard ML | if condition then «(»instructions «)» | if condition then «(»instructions «)» | case value of [b] | |
| Haskell (GHC) | if condition then expression else expressionor when condition (do instructions)or unless notcondition (do instructions) | result|condition = expression | case value of { [b] | |
| Bash shell | if condition-command; then | if condition-command; then | case "$variable" in | |
| CoffeeScript | if condition then expression «else expression»or if conditionor expression if conditionor unless conditionor expression unless condition | if condition then expression else if condition then expression «else expression»or if conditionor unless condition | switch expressionor switch expression | All conditions are expressions. |
| COBOL | IF condition «THEN» [d] | EVALUATE expression «ALSO expression...» | ||
| Rust | if condition { | if condition { | match variable { [b] [e] | All conditions are expressions |
| if | else if | select case | conditional expression |
END-IF may be used instead of the period at the end.,) at the end of a match arm can be omitted after the last match arm, or after any match arm in which the expression is a block (ends in possibly empty matching brackets {}).| while loop | do while loop | (count-controlled) for loop | foreach | |
|---|---|---|---|---|
| Ada [1] | while condition loop | loop | for index in «reverse» [first .. last | discrete_type] loop | for item of «reverse» iterator loopor (for [all | some] [in | of] [first .. last | discrete_type | iterator] => predicate) [b] |
| ALGOL 68 | «for index» «from first» «by increment» «to last» «while condition» do statements od | for key «to upb list» do «typename val=list[key];» statements od | ||
«while condition» | «while statements; condition» | «for index» «from first» «by increment» «to last» do statements od | ||
| APL | :While condition | :Repeat | :For var«s» :In list | :For var«s» :InEach list |
| C (C99) | instructions can be a single statement or a block in the form of: { statements }while (condition) instructions | do instructions while (condition); | for («type» i = first; i <= last; i++) instructions | — |
| Objective-C | for (type item in set) instructions | |||
| C++ (STL) | «std::»for_each(start, end, function)Since C++11: for (type item : set) instructions | |||
| C# | foreach (type item in set) instructions | |||
| Java | for (type item : set) instructions | |||
| JavaScript | for (var i = first; i <= last; i++) instructions | Since EcmaScript 2015: [11]
| ||
| PHP | foreach (range(first, last) as $i) instructionsor for ($i = first; $i <= last; $i++) instructions | foreach (set as item) instructionsor foreach (set as key => item) instructions | ||
| Windows PowerShell | for ($i = first; $i -le last; $i++) instructions | foreach (item in set) instructions | ||
| D | foreach (i; first ... last) instructions | foreach («type» item; set) instructions | ||
| Go | for condition { instructions } | for i := first; i <= last; i++ { instructions } | for key, item := range set { instructions } | |
| Swift | while condition { instructions } | 2.x:repeat { instructions } while condition1.x: do { instructions } while condition | for i = first ... last { instructions }or for i = first ..< last+1 { instructions }or for var i = first; i <= last; i++ { instructions } | for item in set { instructions } |
| Perl | while (condition) { instructions }or until (notcondition) { instructions } | do { instructions } while (condition)or do { instructions } until (notcondition) | for«each» «$i» (first .. last) { instructions }or for ($i = first; $i <= last; $i++) { instructions } | for«each» «$item» (set) { instructions } |
| Raku | while condition { instructions }or until notcondition { instructions } | repeat { instructions } while conditionor repeat { instructions } until notcondition | for first..last -> $i { instructions }or loop ($i = first; $i <=last; $i++) { instructions } | for set« -> $item» { instructions } |
| Ruby | while conditionor until notcondition | beginor begin | for i in first..lastor for i in first...last+1or first.upto(last) { |i|instructions } | for item in setor set.each { |item|instructions } |
| Bash shell | while condition ;door until notcondition ;do | — | for ((i = first; i <= last; ++i)) ; do | for item in set ;do |
| Scala | while (condition) { instructions } | do { instructions } while (condition) | for (i <- first to last «by 1») { instructions }or first to last «by 1» foreach (i => { instructions }) | for (item <- set) { instructions }or set foreach (item => { instructions }) |
| Smalltalk | conditionBlock whileTrue: | loopBlock doWhile: | first to: last do: | collection do: |
| Common Lisp | (loopor (do () (notcondition) | (loop | (loopor (dotimes (i N)or (do ((i first | (loopor (loopor (dolist (item list)or (mapc function list)or (map type function sequence) |
| Scheme | (do () (notcondition) instructions)or | | (do ((i firstor | |
| ISLISP | (while condition instructions) | | | |
| Pascal | while condition do begin | repeat | for i := first «step 1» to last do begin [a] | for item in set do instructions |
| Visual Basic | Do While conditionor Do Until notconditionor While condition (Visual Basic .NET uses End While instead) | Door Do | i must be declared beforehand.
| For Each item In set |
| Visual Basic .NET | For i« As type» = first To last« Step 1» [a] | For Each item« As type» In set | ||
| Xojo | While condition | Do Until notconditionor Do | ||
| Python | while condition : | — | Python 3.x:Python 2.x: | for item in set: |
| S-Lang | while (condition) { instructions } «then optional-block» | do { instructions } while (condition) «then optional-block» | for (i = first; i <= last; i++) { instructions } «then optional-block» | foreach item(set) «using (what)» { instructions } «then optional-block» |
| Fortran | DO WHILE (condition) | DO | DO I = first,last | — |
| Forth | BEGIN «instructions» condition WHILE instructions REPEAT | BEGIN instructions condition UNTIL | limit start DO instructions LOOP | — |
| OCaml | while condition do instructions done | — | for i = first to last do instructions done | Array.iter (fun item -> instructions) arrayor List.iter (fun item -> instructions) list |
| F# | while condition do | — | for i = first to last do | for item in set door Seq.iter (fun item -> instructions) set |
| Standard ML | while condition do ( instructions ) | — | Array.app (fn item => instructions) arrayor app (fn item => instructions) list | |
| Haskell (GHC) | — | Control.Monad.forM_ [first..last] (\i -> do instructions) | Control.Monad.forM_list (\item -> do instructions) | |
| Eiffel | from | |||
| CoffeeScript | while conditionor expression while conditionor while condition then expressionor until conditionor expression until conditionor until expression then condition | — | for i in [first..last]or for i in [first..last] then expressionor expression for i in [first..last] | for item in setor for item in set then expressionor expression for item in set |
| COBOL | PERFORM procedure-1 «THROUGH procedure-2» [c] or | PERFORM procedure-1 «THROUGH procedure-2» [c] or | PERFORM procedure-1 «THROUGH procedure-2» VARYING i FROM first BY increment UNTIL i > last [d] or PERFORM VARYING i FROM first BY increment UNTIL i > last [d] | — |
| Rust | while condition { | loop { | for i in first..last+1 { or for i in first..=last { | for item in set { [e] or set.into_iter().for_each(|item| expression); [e] |
step n" is used to change the loop interval. If "step" is omitted, then the loop interval is 1.THRU may be used instead of THROUGH.«IS»GREATER «THAN» may be used instead of >.std::iter::IntoIterator.| throw | handler | assertion | |
|---|---|---|---|
| Ada [1] | raise exception_name «with string_expression» | begin [b] | |
| APL | «string_expression» ⎕SIGNAL number_expression | :Trap number«s»_expression | «string_expression» |
| C (C99) | longjmp(state, exception); | switch (setjmp(state)) { case 0: instructions break; case exception: instructions ... } | assert(condition); |
| C++ | throw exception; | try { instructions } catch «(exception)» { instructions } ... | |
| C# | try { instructions } catch «(exception« name»)» { instructions } ... «finally { instructions }» | System.Diagnostics.Debug.Assert(condition);or System.Diagnostics.Trace.Assert(condition); | |
| Java | try { instructions } catch (exception) { instructions } ... «finally { instructions }» | assert condition «: description»; | |
| JavaScript | try { instructions } catch (exception) { instructions} «finally { instructions }» | ? | |
| D | try { instructions } catch (exception) { instructions } ... «finally { instructions }» | assert(condition); | |
| PHP | try { instructions } catch (exception) { instructions } ... «finally { instructions }» | assert(condition); | |
| S-Lang | try { instructions } catch «exception» { instructions } ... «finally { instructions }» | ? | |
| Windows PowerShell | trap «[exception]» { instructions } ... instructionsor try { instructions } catch «[exception]» { instructions } ... «finally { instructions }» | | |
| Objective-C | @throw exception; | @try { instructions } @catch (exception) { instructions } ... «@finally { instructions }» | NSAssert(condition, description); |
| Swift | throw exception (2.x) | do { try expression ... instructions } catch exception { instructions } ... (2.x) | assert(condition«, description») |
| Perl | die exception; | eval { instructions | ? |
| Raku | try { instructions CATCH { when exception { instructions } ...}} | ? | |
| Ruby | raise exception | begin | |
| Smalltalk | exception raise | instructionBlock on: exception do: handlerBlock | assert: conditionBlock |
| Common Lisp | (error "exception")or (erroror (error (make-condition | (handler-caseor (handler-bind [a] | (assert condition)or (assert conditionor (check-type var type) |
| Scheme (R6RS) | (raise exception) | (guard (con (condition instructions) ...) instructions) | ? |
| ISLISP | (error "error-string" objects)or (signal-condition condition continuable) | (with-handler | ? |
| Pascal | raise Exception.Create() | try Except on E: exception do begin instructions end; end; | ? |
| Visual Basic | Err.Raise ERRORNUMBER | '*** Try class ***PrivatemstrDescriptionAsStringPrivatemlngNumberAsLongPublicSubCatch()mstrDescription=Err.DescriptionmlngNumber=Err.NumberEndSubPublicPropertyGetNumber()AsLongNumber=mlngNumberEndPropertyPublicPropertyGetDescription()AsStringDescription=mstrDescriptionEndProperty | Debug.Assert condition |
| Visual Basic .NET | Throw exceptionor Error errorcode | Try | System.Diagnostics.or System.Diagnostics. |
| Xojo | Raise exception | Try | — |
| Python | raise exception | try: | assert condition |
| Fortran | — | ||
| Forth | code THROW | xt CATCH ( code or 0 ) | — |
| OCaml | raise exception | try expression with pattern -> expression ... | assert condition |
| F# | try expression with pattern -> expression ...or try expression finally expression | ||
| Standard ML | raise exception «arg» | expression handle pattern => expression ... | |
| Haskell (GHC) | throw exceptionor throwError expression | catch tryExpression catchExpressionor catchError tryExpression catchExpression | assert condition expression |
| COBOL | | or or or | — |
| Rust | No [13] | assert!(condition) | |
with-simple-restart, restart-case and restart-bind to define restarts for use with invoke-restart. Unhandled conditions may cause the implementation to show a restarts menu to the user before unwinding the stack.| exit block (break) | continue | label | branch (goto) | return value from generator | |
|---|---|---|---|---|---|
| Ada [1] | exit «loop_name» «when condition» | — | label: | goto label | — |
| ALGOL 68 | value exit; ... | do statements; skip exit; label: statements od | label: ... | go to label; ... | yield(value) |
| APL | :Leave | :Continue | label: | →labelor :GoTo label | — |
| C (C99) | break; | continue; | label: | goto label; | — |
| Objective-C | |||||
| C++ (STL) | |||||
| D | |||||
| C# | yield return value; | ||||
| Java | break «label»; | continue «label»; | — | ||
| JavaScript | yield value«;» | ||||
| PHP | break «levels»; | continue «levels»; | goto label; | yield «key =>» value; | |
| Perl | last «label»; | next «label»; | |||
| Raku | |||||
| Go | break «label» | continue «label» | goto label | ||
| Swift | break «label» | continue «label» | — | ||
| Bash shell | break «levels» | continue «levels» | — | — | — |
| Common Lisp | (return)or (return-from block)or (loop-finish) | (tagbody tag | (go tag) | ||
| Scheme | |||||
| ISLISP | (return-from block) | (tagbody tag | (go tag) | ||
| Pascal (ISO) | — | label: [a] | goto label; | — | |
| Pascal (FPC) | break; | continue; | |||
| Visual Basic | Exit blockAlternatively, for methods,Return | — | label: | GoTo label | |
| Xojo | Continue block | ||||
| Visual Basic .NET | Yield value | ||||
| Python | break | continue | — | yield value | |
| RPG IV | LEAVE; | ITER; | |||
| S-Lang | break; | continue; | |||
| Fortran | EXIT | CYCLE | label [b] | GOTO label | — |
| Ruby | break | next | |||
| Windows PowerShell | break «label» | continue | |||
| OCaml | — | ||||
| F# | |||||
| Standard ML | |||||
| Haskell (GHC) | |||||
| COBOL | EXIT PERFORM or EXIT PARAGRAPH or EXIT SECTION or EXIT. | EXIT PERFORM CYCLE | label «SECTION». | GO TO label | — |
See reflective programming for calling and declaring functions by strings.
| calling a function | basic/void function | value-returning function | required main function | |
|---|---|---|---|---|
| Ada [1] | foo «(parameters)» | procedure foo «(parameters)» is begin statements end foo | function foo «(parameters)» return type is begin statements end foo | — |
| ALGOL 68 | foo «(parameters)»; | proc foo = «(parameters)» void: ( instructions ); | proc foo = «(parameters)» rettype: ( instructions ...; retvalue ); | — |
| APL | «parameters» foo parameters | foo←{ statements } | foo←{ statements } | — |
| C (C99) | foo(«parameters») | void foo(«parameters») { instructions } | typefoo(«parameters») { instructions ... return value; } | «global declarations» |
| Objective-C | ||||
| C++ (STL) | ||||
| Java | or | |||
| D | or or or | |||
| C# | Same as above; alternatively, if only one statement:
| Same as above; alternatively, if simple enough to be an expression:
| staticvoidMain(«string[]args»)method_bodyMay instead return int.(starting with C# 7.1:) May return Task or Task<int>, and if so, may be async. | |
| JavaScript | function foo(«parameters») { instructions }or or | function foo(«parameters») { instructions ... return value; } | — | |
| Go | func foo(«parameters») { instructions } | func foo(«parameters») type { instructions ... return value } | func main() { instructions } | |
| Swift | func foo(«parameters») { instructions } | func foo(«parameters») -> type { instructions ... return value } | — | |
| Common Lisp | (foo «parameters») | (defun foo («parameters»)or | (defun foo («parameters») | — |
| Scheme | (define (foo parameters) instructions)or (define foo (lambda (parameters) instructions)) | (define (foo parameters) instructions... return_value)or (define foo (lambda (parameters) instructions... return_value)) | ||
| ISLISP | (defun foo («parameters») | (defun foo («parameters») | ||
| Pascal | foo«(parameters)» | procedure foo«(parameters)»; «forward;» [a] | function foo«(parameters)»: type; «forward;» [a] | program name; |
| Visual Basic | Foo(«parameters») | Sub Foo«(parameters)» | Function Foo«(parameters)»« As type» | Sub Main() |
| Visual Basic .NET | Same as above; alternatively:
| or | ||
| Xojo | ||||
| Python | foo(«parameters») | def foo(«parameters»): | def foo(«parameters»): | — |
| S-Lang | foo(«parameters» «;qualifiers») | define foo («parameters») { instructions } | define foo («parameters») { instructions ... return value; } | public define slsh_main () { instructions } |
| Fortran | foo («arguments») [c] | SUBROUTINE sub_foo («arguments») [c] | type FUNCTION foo («arguments») [c] | PROGRAM main |
| Forth | «parameters» FOO | | | — |
| PHP | foo(«parameters») | function foo(«parameters») { instructions } | function foo(«parameters») { instructions ... return value; } | — |
| Perl | foo(«parameters»)or &foo«(parameters)» | | | |
| Raku | foo(«parameters»)or &foo«(parameters)» | | «our «type» » | |
| Ruby | foo«(parameters)» | def foo«(parameters)» | def foo«(parameters)» | |
| Rust | foo(«parameters») | fn foo(«parameters») { instructions } | fn foo(«parameters») -> type { instructions } | fn main() { instructions } |
| Scala | foo«(parameters)» | def foo«(parameters)»«: Unit =» { instructions } | def foo«(parameters)»«: type» = { instructions ... «return» value } | |
| Windows PowerShell | foo «parameters» | function foo { instructions };or function foo { «param(parameters)» instructions } | function foo «(parameters)» { instructions ... return value };or function foo { «param(parameters)» instructions ... return value } | — |
| Bash shell | foo «parameters» | function foo {or foo () { | function foo {or foo () { | |
| ||||
| OCaml | foo parameters | let «rec» foo parameters = instructions | let «rec» foo parameters = instructions... return_value | |
| F# | | |||
| Standard ML | fun foo parameters = ( instructions ) | fun foo parameters = ( instructions... return_value ) | ||
| Haskell | foo parameters = do | foo parameters = return_valueor foo parameters = do | «main :: IO ()» | |
| Eiffel | foo («parameters») | foo («parameters») | foo («parameters»): type | [b] |
| CoffeeScript | foo() | foo=-> | | — |
foo parameters | foo=() -> | foo = ( parameters ) ->value | ||
| COBOL | CALL "foo" «USING parameters» [d] | «IDENTIFICATION DIVISION.» | «IDENTIFICATION DIVISION.» | — |
«FUNCTION» foo«(«parameters»)» | — | |||
forward;" for forward declarations.PARAMETER is a language keyword); the CALL keyword is required for subroutines."foo", a string variable may be used instead containing the same value.Where string is a signed decimal number:
| string to integer | string to long integer | string to floating point | integer to string | floating point to string | |
|---|---|---|---|---|---|
| Ada [1] | Integer'Value (string_expression) | Long_Integer'Value (string_expression) | Float'Value (string_expression) | Integer'Image (integer_expression) | Float'Image (float_expression) |
| ALGOL 68 with general, and then specific formats | With prior declarations and association of: string buf := "12345678.9012e34 "; file proxy; associate(proxy, buf); | ||||
get(proxy, ivar); | get(proxy, livar); | get(proxy, rvar); | put(proxy, ival); | put(proxy, rval); | |
getf(proxy, ($g$, ivar));or getf(proxy, ($dddd$, ivar)); | getf(proxy, ($g$, livar));or getf(proxy, ($8d$, livar)); | getf(proxy, ($g$, rvar));or getf(proxy, ($8d.4dE2d$, rvar)); | putf(proxy, ($g$, ival));or putf(proxy, ($4d$, ival)); | putf(proxy, ($g(width, places, exp)$, rval));or putf(proxy, ($8d.4dE2d$, rval)); | |
| APL | ⍎string_expression | ⍎string_expression | ⍎string_expression | ⍕integer_expression | ⍕float_expression |
| C (C99) | integer = atoi(string); | long = atol(string); | float = atof(string); | sprintf(string, "%i", integer); | sprintf(string, "%f", float); |
| Objective-C | integer = [string intValue]; | long = [string longLongValue]; | float = [string doubleValue]; | string = | string = |
| C++ (STL) | «std::»istringstream(string) >> number; | «std::»ostringstream o; o << number; string = o.str(); | |||
| C++11 | integer = «std::»stoi(string); | long = «std::»stol(string); | float = «std::»stof(string); double = «std::»stod(string); | string = «std::»to_string(number); | |
| C# | integer = int.Parse | long = long.Parse | float = float.Parsedouble = double.Parse | string = number | |
| D | integer = std.conv.to!int | long = std.conv.to!long | float = std.conv.to!floatdouble = std.conv.to!double | string = std.conv.to!string | |
| Java | integer = Integer.parseInt | long = Long.parseLong | float = Float.parseFloatdouble = Double.parseDouble | string = Integer.toStringstring = String.valueOf | string = Float.toStringstring = Double.toString |
| JavaScript [a] | integer = parseInt(string); | float = parseFloat(string);float = new Number (string);float = Number (string);float = +string; | string = number.toString ();string = String (number);string = number+"";string = `${number}` | ||
| Go | integer, error = strconv.Atoi(string) | long, error = strconv.ParseInt | float, error = strconv.ParseFloat | string = strconv.Itoa(integer)string = strconv.FormatIntstring = fmt.Sprint(integer) | string = strconv.FormatFloatstring = fmt.Sprint |
| Rust [d] | string.parse::<i32>()i32::from_str(string) | string.parse::<i64>()i64::from_str(string) | string.parse::<f64>()f64::from_str(string) | integer.to_string() | float.to_string() |
| Common Lisp | (setf integer (parse-integer string)) | (setf float (read-from-string string)) | (setf string (princ-to-string number)) | ||
| Scheme | (define number (string->number string)) | (define string (number->string number)) | |||
| ISLISP | (setf integer (convert string<integer>)) | (setf float (convert string<float>)) | (setf string (convert number<string>)) | ||
| Pascal | integer := StrToInt(string); | float := StrToFloat(string); | string := IntToStr(integer); | string := FloatToStr(float); | |
| Visual Basic | integer = CInt(string) | long = CLng(string) | float = CSng(string) | string = CStr(number) | |
| Visual Basic .NET (can use both VB syntax above and .NET methods shown right) | integer = Integer.Parse | long = Long.Parse | float = Single.Parsedouble = Double.Parse | string = number | |
| Xojo | integer = Val(string) | long = Val(string) | double = Val(string)double = CDbl(string) | string = CStr(number)or string = Str(number) | |
| Python | integer = int(string) | long = long(string) | float = float(string) | string = str(number) | |
| S-Lang | integer = atoi(string); | long = atol(string); | float = atof(string); | string = string(number); | |
| Fortran | READ(string,format) number | WRITE(string,format) number | |||
| PHP | integer = intval(string);or integer = (int)string; | float = floatval(string);float = (float)string; | string = "$number";or string = strval(number);or string = (string)number; | ||
| Perl [b] | number = 0 + string; | string = "number"; | |||
| Raku | number = +string; | string = ~number; | |||
| Ruby | integer = string.to_ior integer = Integer(string) | float = string.to_ffloat = Float(string) | string = number.to_s | ||
| Scala | integer = string.toInt | long = string.toLong | float = string.toFloatdouble = string.toDouble | string = number.toString | |
| Smalltalk | integer := Integer readFrom: string | float := Float readFrom: string | string := number asString | ||
| Windows PowerShell | integer = [int]string | long = [long]string | float = [float]string | string = [string]number;or string = "number";or string = (number).ToString() | |
| OCaml | let integer = int_ | let float = float_ | let string = string_ | let string = string_ | |
| F# | let integer = int string | let integer = int64 string | let float = float string | let string = string number | |
| Standard ML | val integer = Int | val float = Real | val string = Int | val string = Real | |
| Haskell (GHC) | number = read string | string = show number | |||
| COBOL | | MOVE number TO numeric-edited | |||
NUMVAL-C or NUMVAL-F may be used instead of NUMVAL.str::parse is available to convert any type that has an implementation of the std::str::FromStr trait. Both str::parse and FromStr::from_str return a Result that contains the specified type if there is no error. The turbofish (::<_>) on str::parse can be omitted if the type can be inferred from context.| read from | write to | ||
|---|---|---|---|
| stdin | stdout | stderr | |
| Ada [1] | Get (x) | Put (x) | Put (Standard_Error, x) |
| ALGOL 68 | readf(($format$, x));or getf(stand in, ($format$, x)); | printf(($format$, x));or putf(stand out, ($format$, x)); | putf(stand error, ($format$, x)); [a] |
| APL | x←⎕ | ⎕←x | ⍞←x |
| C (C99) | scanf(format, &x);or fscanf(stdin, format, &x); [b] | printf(format, x);or fprintf(stdout, format, x); [c] | fprintf(stderr, format, x); [d] |
| Objective-C | data=[[NSFileHandlefileHandleWithStandardInput]readDataToEndOfFile]; | [[NSFileHandlefileHandleWithStandardOutput]writeData:data]; | [[NSFileHandlefileHandleWithStandardError]writeData:data]; |
| C++ | «std::»cin >> x;or «std::»getline(«std::»cin, str); | «std::»cout << x; | «std::»cerr << x;or «std::»clog << x; |
| C# | x = Console.Read();or x = Console.ReadLine(); | Console.Write(«format, »x);or Console.WriteLine(«format, »x); | Console.Erroror Console.Error |
| D | x = std.stdio.readln() | std.stdio.write(x)or std.stdio.writeln(x)or std.stdio.writef(format, x)or std.stdio.writefln(format, x) | stderr.write(x)or stderr.writeln(x)or std.stdioor std.stdio |
| Java | x=System.in.read();or x=newScanner(System.in).nextInt();or x=newScanner(System.in).nextLine(); | System.out.print(x);or System.out.printf(format, x);or System.out.println(x); | System.err.print(x);or System.err.printf(format, x);or System.err.println(x); |
| Go | fmt.Scan(&x)or fmt.Scanf(format, &x)or x=bufio.NewReader(os.Stdin).ReadString('\n') | fmt.Println(x)or fmt.Printf(format, x) | fmt.Fprintln(os.Stderr, x)or fmt.Fprintf(os.Stderr, format, x) |
| Swift | x = readLine() (2.x) | print(x) (2.x)println(x) (1.x) | |
| JavaScript Web Browser implementation | document.write(x) | ||
| JavaScript Active Server Pages | Response.Write(x) | ||
| JavaScript Windows Script Host | x = WScript.StdIn.Read(chars)or x = WScript.StdIn.ReadLine() | WScript.Echo(x)or WScript.StdOut.Write(x)or WScript.StdOut.WriteLine(x) | WScript.StdErr.Write(x)or WScript.StdErr.WriteLine(x) |
| Common Lisp | (setfx(read-line)) | (princ x)or (format t format x) | (princx*error-output*)or |
| Scheme (R6RS) | (definex(read-line)) | (display x)or | (displayx(current-error-port))or |
| ISLISP | (setf x (read-line)) | | |
| Pascal | read(x);or readln(x); | write(x);or writeln(x); | write(stderr, x);or writeln(stderr, x); |
| Visual Basic | Input« prompt,» x | Print xor ? x | — |
| Visual Basic .NET | x = Console.Read()or x = Console.ReadLine() | Console.Write(«format,»x)or Console.WriteLine(«format, »x) | Console.Erroror Console.Error |
| Xojo | x = StandardInputStream.Read()or x = StandardInputStreame.ReadLine() | StandardOutputStream.Write(x)or StandardOutputStream.WriteLine(x) | StdErr.Write(x)or StdErr.WriteLine(x) |
| Python 2.x | x = raw_input(«prompt») | print xor sys.stdout.write(x) | or sys.stderr.write(x) |
| Python 3.x | x = input(«prompt») | print(x«, end=""») | print(x«, end=""», file=sys.stderr) |
| S-Lang | fgets (&x, stdin) | fputs (x, stdout) | fputs (x, stderr) |
| Fortran | READ(*,format) variable namesor READ(INPUT_UNIT,format) variable names [e] | WRITE(*,format) expressionsor WRITE(OUTPUT_UNIT,format) expressions [e] | WRITE(ERROR_UNIT,format) expressions [e] |
| Forth | buffer length ACCEPT ( # chars read ) | buffer length TYPE | — |
| PHP | $x = fgets(STDIN);or $x = fscanf(STDIN, format); | print x;or echo x;or printf(format, x); | fprintf(STDERR, format, x); |
| Perl | $x = <>;or $x = <STDIN>; | print x;or printf format, x; | print STDERR x;or printf STDERR format, x; |
| Raku | $x = $*IN.get; | x.printor x.say | x.noteor $*ERR.print(x)or $*ERR.say(x) |
| Ruby | x = gets | puts xor printf(format, x) | $stderr.puts(x)or $stderr.printf(format, x) |
| Windows PowerShell | $x = Read-Host«« -Prompt» text»;or $x=[Console]::Read();or $x=[Console]::ReadLine() | x;or Write-Output x;or echo x | Write-Error x |
| OCaml | let x = read_int ()or let str = read_line ()or Scanf.scanf format (fun x ...->...) | print_int xor print_endline stror Printf.printf format x ... | prerr_int xor prerr_endline stror Printf.eprintf format x ... |
| F# | letx=System.Console.ReadLine() | printf format x ...or printfn format x ... | eprintf format x ...or eprintfn format x ... |
| Standard ML | valstr=TextIO.inputLIneTextIO.stdIn | print str | |
| Haskell (GHC) | x <- readLnor str<- getLine | print xor putStrLn str | hPrint stderr xor hPutStrLn stderr str |
| COBOL | ACCEPT x | DISPLAY x | |
read, write, get, and put. gets(x) and fgets(x, length, stdin) read unformatted text from stdin. Use of gets is not recommended. puts(x) and fputs(x, stdout) write unformatted text to stdout.fputs(x, stderr) writes unformatted text to stderr| Argument values | Argument counts | Program name / Script name | |
|---|---|---|---|
| Ada [1] | Argument (n) | Argument_Count | Command_Name |
| C (C99) | argv[n] | argc | first argument |
| Objective-C | |||
| C++ | |||
| C# | args[n] | args.Length | Assembly.GetEntryAssembly() |
| Java | args.length | ||
| D | first argument | ||
| JavaScript Windows Script Host implementation | WScript.Arguments(n) | WScript.Arguments.length | WScript.ScriptNameor WScript.ScriptFullName |
| Go | os.Args[n] | len(os.Args) | first argument |
| Rust [a] | std::env::args().nth(n)std::env::args_os().nth(n) | std::env::args().count()std::env::args_os().count() | std::env::args().next()std::env::args_os().next() |
| Swift | Process.arguments[n] orProcess.unsafeArgv[n] | Process.arguments.count orProcess.argc | first argument |
| Common Lisp | ? | ? | ? |
| Scheme (R6RS) | (list-ref(command-line)n) | (length(command-line)) | first argument |
| ISLISP | — | — | — |
| Pascal | ParamStr(n) | ParamCount | first argument |
| Visual Basic | Command [b] | — | App.Path |
| Visual Basic .NET | CmdArgs(n) | CmdArgs.Length | [Assembly].GetEntryAssembly().Location |
| Xojo | System.CommandLine | (string parsing) | Application.ExecutableFile.Name |
| Python | sys.argv[n] | len(sys.argv) | first argument |
| S-Lang | __argv[n] | __argc | first argument |
| Fortran | DO i = 1,argc | argc = COMMAND_ARGUMENT_COUNT () | CALL GET_COMMAND_ARGUMENT (0,progname) |
| PHP | $argv[n] | $argc | first argument |
| Bash shell | $n ($1, $2, $3, ...)$@ (all arguments) | $# | $0 |
| Perl | $ARGV[n] | scalar(@ARGV) | $0 |
| Raku | @*ARGS[n] | @*ARGS.elems | $PROGRAM_NAME |
| Ruby | ARGV[n] | ARGV.size | $0 |
| Windows PowerShell | $args[n] | $args.Length | $MyInvocation.MyCommand |
| OCaml | Sys.argv.(n) | Array.length Sys.argv | first argument |
| F# | args.[n] | args.Length | Assembly.GetEntryAssembly() |
| Standard ML | List.nth(CommandLine.arguments(),n) | length(CommandLine.arguments()) | CommandLine.name() |
| Haskell (GHC) | do{args<-System.getArgs;returnlengthargs!!n} | do{args<-System.getArgs;returnlengthargs} | System.getProgName |
| COBOL | [c] | — | |
std::env::args and std::env::args_os return iterators, std::env::Args and std::env::ArgsOs respectively. Args converts each argument to a String and it panics if it reaches an argument that cannot be converted to UTF-8. ArgsOs returns a non-lossy representation of the raw strings from the operating system (std::ffi::OsString), which can be invalid UTF-8.Split(string).ACCEPT statements.| Shell command | Execute program | Replace current program with new executed program | |
|---|---|---|---|
| Ada [1] | Not part of the language standard. Commonly done by compiler provided packages or by interfacing to C or POSIX. [16] | ||
| C | system("command"); | execl(path, args);or execv(path, arglist); | |
| C++ | |||
| Objective-C | [NSTasklaunchedTaskWithLaunchPath:(NSString*)patharguments:(NSArray*)arguments]; | ||
| C# | System.Diagnostics | ||
| F# | |||
| Go | exec.Run(path, argv, envv, dir, exec.DevNull, exec.DevNull, exec.DevNull) | os.Exec(path, argv, envv) | |
| Visual Basic | Interaction.Shell(command «, WindowStyle» «, isWaitOnReturn») | ||
| Visual Basic .NET | Microsoft.VisualBasic | System.Diagnostics | |
| Xojo | Shell.Execute(command «, Parameters») | FolderItem.Launch(parameters, activate) | — |
| D | std.process.system("command"); | std.process.execv(path, arglist); | |
| Java | Runtime.exec(command);or new ProcessBuilder(command).start(); | ||
| JavaScript Windows Script Host implementation | | WshShell.Exec(command) | |
| Common Lisp | (uiop:run-program command) | ||
| Scheme | (system command) | ||
| ISLISP | — | — | — |
| Pascal | system(command); | ||
| OCaml | Sys.command command, Unix.open_process_full command env (stdout, stdin, stderr),... | Unix.create_process prog args new_stdin new_stdout new_stderr, ... | Unix.execv prog argsor Unix.execve prog args env |
| Standard ML | OS.Process.system command | Unix.execute (path, args) | Posix.Process.exec (path, args) |
| Haskell (GHC) | System.system command | System.Process | Posix.Process |
| Perl | system(command)or $output = `command`or $output = qx(command) | exec(path, args) | |
| Ruby | system(command)or output = `command` | exec(path, args) | |
| PHP | system(command)or $output = `command`or exec(command)or passthru(command) | ||
| Python | os.system(command)or subprocess.Popen(command) | subprocess.call(["program", "arg1", "arg2", ...]) | os.execv(path, args) |
| S-Lang | system(command) | ||
| Fortran | CALL EXECUTE_COMMAND_LINE (COMMAND «, WAIT» «, EXITSTAT» «, CMDSTAT» «, CMDMSG») [a] | ||
| Windows PowerShell | [Diagnostics.Process]::Start(command) | «Invoke-Item »program arg1 arg2 ... | |
| Bash shell | output=`command`or output=$(command) | program arg1 arg2 ... | |