Pascal for C users
Sent here from Pascal for C++ users.
Overview
This page gives some translations between C(++) and Pascal concepts.
Translation
Note: Logical operators (AND/OR/XOR etc) are logical or boolean depending on the type of the arguments (boolean or integer). Since Pascal had a separate boolean type from the start, boolean operators on integers were not necessary, and are always logical.
| C | Pascal | Notes |
|---|---|---|
| { | Begin | |
| } | End | |
| = | := | Becomes |
| == | = | Equal |
| / | / | Float Division (Integer: div) |
| % | Mod | Modulo operation |
| ! | Not | Logical not |
| != | <> | Not equal |
| && | And | Logical and |
| <nowiki> | Or | |
| & | And | Bitwise and |
| | | Or | Bitwise or |
| ^ | Xor | Exclusive or |
| ~ | Not | One's complement |
| >> | Shr | bit shift right Note: shr is a logical bitshift, not arithmetic. If the left operand is a negative value of a signed type, then the result of an shr operation may not be what you expect. |
| << | Shl | bit shift left |
| ++ | Inc | |
| -- | Dec | |
| /* | { or (* | Comment start |
| */ | } or *) | Comment end |
| // | // | End of line comment (only one line comment) |
| 0x | $ | prefix for hex-number e.g. $FFFFFF |
| 0 | & | prefix for oct-number e.g. &77777777 |
| 0b | % | prefix for bin-number e.g. %11111111 |
| & | @ | address operator |
| * | [[^]] | See Pointer and Pointers |
| if() | If Then | |
| if() else | If Then Else | |
| while | While Do | |
| do while | Repeat Until Not | |
| do while ! | Repeat Until | |
| for ++ | For To Do | |
| for -- | For Downto Do | |
| switch case break | Case Of End | |
| switch case break default | Case Of Else End | |
| const a_c_struct *arg | Constref arg : a_c_struct | |
| a_c_struct *arg | Var arg : a_c_struct | |
| C type | Pascal type | Size (bits) | Range | Notes |
|---|---|---|---|---|
| char | Char | 8-bit | ASCII | |
| signed char | Shortint | 8-bit | -128 .. 127 | |
| unsigned char | Byte | 8-bit | 0 .. 255 | |
| char* | PChar | (32-bit) | Pointer to a null-terminated string | |
| short int | Smallint | 16-bit | -32768 .. 32767 | |
| unsigned short int | Word | 16-bit | 0 .. 65535 | |
| int | Integer | (16-bit or) 32-bit | -2147483648..2147483647 | Generic integer types |
| unsigned int | Cardinal | (16-bit or) 32-bit | 0 .. 4294967295 | Generic integer types |
| long int | Longint | 32-bit | -2147483648..2147483647 | |
| unsigned long int | Longword | 32-bit | 0 .. 4294967295 | |
| float | Single | 32-bit | 1.5E-45 .. 3.4E+38 | |
| double | Double | 64-bit | 5.0E-324 .. 1.7E+308 | |
| unsigned long long int | uInt64 | 64-bit | 0 .. 18446744073709551616 | |
| C type | Pascal | Notes |
|---|---|---|
| struct { } | Record End | |
| union { } | Record Case Of End | Variant Record |
| C | Pascal | Unit |
|---|---|---|
| abs | Abs | System |
| acos | ArcCos | Math |
| asin | ArcSin | Math |
| atan | ArcTan | System |
| atof | StrToFloat | SysUtils |
| atoi | StrToInt | SysUtils |
| atol | StrToInt | SysUtils |
| atoll | StrToInt64 | SysUtils |
| ceil | Ceil | Math |
| cos | Cos | System |
| exp | Exp | System |
| floor | Floor | Math |
| pow | Power | Math |
| round | Round | System |
| sin | Sin | System |
| sqrt | Sqrt | System |
| strcpy | Copy | System |
| strlen | Length | System |
| tan | Tan | Math |
| toupper | UpCase | System |
C++
| C++ type | Pascal | Notes |
|---|---|---|
| class { } | Class End | |
| class: { } | Class( ) End | |
| template <class T> class { } | Generic = Class<T> End | |
| struct { } | Object End | If you want methods |
See also
- C to Pascal - conversion tools and libraries
- Short tutorial that describes the process of using C and C++ code in FreePascal, including writing of wrapper code
- Creating bindings for C libraries
- Common problems when converting C header files
- SWIG
- “Comparison of Pascal and C” on the English Wikipedia
From the Free Pascal wiki, page "Pascal for C users", as it stood on 2022-12-03 after a change by Blueicaro, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
