Cronus GPC Documentation
Cronus CommunityGPC LibraryGPC Guide
  • Welcome
  • Introduction
    • GPC Explained
    • What's New with Zen?
  • Basic Syntax
  • A Simple Tutorial
  • Style Guide
  • GPC Structure
  • Basic GPC Structure
  • Definitions
  • Data Section
  • Remapping
  • Variables
  • Init Section
  • Main Section
  • Combo Section
  • User Created Functions
  • GPC Programming Basics
  • Constants
    • Zen
      • OLED
      • ASCII Constants
      • PIO
    • Keyboard
      • Keyboard
    • Controller
      • Polar
      • LED
      • Rumble
      • PS3
      • PS4
      • XBox 360
      • Xbox One
      • Nintendo WII
      • Nintendo Switch
    • Racing Wheel
      • G29
      • G27
      • G25
      • DF
      • DF GT
      • DF Pro
    • Trace
    • Memory
    • Misc
  • Flow Control
  • Persistent Memory
  • Operator Types
  • Identifiers
  • Functions & Commands
    • Internal Functions
      • Bit Functions
      • Combo Functions
      • Math Functions
      • Device Functions
      • OLED Display Functions
    • Console Functions
      • Core Console Functions
    • Controller Functions
      • Core Controller Functions
      • Rumble Functions
      • LED Functions
    • Keyboard Functions
      • Core Keyboard Functions
  • GPC Examples
    • #1
Powered by GitBook
On this page

Was this helpful?

Operator Types

An operator is a symbol which tells the interpreter to perform specific mathematical, relational or logical operation and produce final result. This section details the operators available in GPC.

int a = 10;
int b = 5;
int c = 0;

main {

     // Assignment Operator
     c = 5;        // c is set to a value of 5
     c += 5;       // c is set to a value of 10 (5 + 5 = 10)
     c -= 5;       // c is set to a value of 5 (10 - 5 = 5)
     c *= 5;       // c is set to a value of 25 (5 * 5 = 25)
     c /= 5;       // c is set to a value of 5 (25 / 5 = 5)
     c %= 5;       // c is set to a value of 0 (5 % 5 = 0)
    
     // Mathmatical Operators
     c = a + b;    // Addition        c = 15
     c = a - b;    // Subtraction     c = 5
     c = a * b;    // Multiplication  c = 50
     c = a / b;    // Division        c = 2
     c++;          // Increment       c = 3
     c--;          // Decrement       c = 2
     
     // Logical Operators
     if (c ! a)    // NOT             if c is not a
     if (a && c)   // AND             if a and c are TRUE
     if (a || c)   // OR              if a or c are TRUE
     if (a ^^ c)   // XOR             if either a or c are TRUE but not both
     
     // Relational Operators               
     if (c == 10)  // EQUAL TO                  if c is equal to 10
     if (c != 50)  // NOT EQUAL TO              if c is not equal to 50
     if (c < 20)   // LESS THAN                 if c is less than 20
     if (c > 30)   // GREATER THAN              if c is greater than 30
     if (c <= 40)  // LESS THAN OR EQUAL TO     if c is less than or equal to 40
     if (c >= 40)  // GREATER THAN OR EQUAL TO  if c is greater than or equal to 40
}

= is the assignment operator. Think of this as gets set to rather than equal to. When = is used, the left operand gets set to the value of the right operand. There are also a number of short hands for common tasks such as incrementing a value by a set amount.

Operator

Description

=

Sets the left operand to the value of the right operand

+=

Sets the left operand to the value of the left operand plus the right operand

-=

Sets the left operand to the value of the left operand minus the right operand

*=

Sets the left operand to the value of the left operand multiplied by the right operand

/=

Sets the left operand to the value of the left operand divided by the right operand

%=

Sets the left operand to the remainder of dividing the left operand by the right operand

In the example below, assume a holds a value of 10.

a  = 5; // a is set to 5
a += 5; // a is set to 15
a -= 5; // a is set to 5
a *= 5; // a is set to 50
a /= 5; // a is set to 2
a %= 3; // a is set to 1

It is often necessary to perform arithmetic on two values. The following table lists the arithmetic operators available in GPC.

Operator

Description

+

Adds two operands

-

Subtracts right operand from the left operand

*

Multiplies both operands

/

Divides the left operand by the right operand

%

Modulus, gives the remainder of an integer division

++

Increments by 1

--

Decrements by 1

In the example below, assume a holds a value of 10 and b holds a value of 5.

a + b;    // will give a value of 15
a - b;    // will give a value of 5
a * b;    // will give a value of 50
a / b;    // will give a value of 2
a % b;    // will give a value of 0
a++;      // will give a value of 11
a--;      // will give a value of 9

Note, GPC does not support fractions so the division operator / will drop any fractions. For example, 10 / 3 = 3 as the fraction is dropped. It also does not round, so 3 / 4 = 0 and not 1.

Logical operators are important in any programming language as they allow to tell the interpreter to make decisions based on certain conditions. The following table lists the logical operators within the GPC languauge.

Operator

Description

&&

AND operator, if both operators are TRUE then the condition becomes TRUE

||

OR operator, if either operand is TRUE then the condition becomes TRUE

^^

XOR operator, if either operand is TRUE but not both then the condition becomes TRUE

!

NOT operator. Reverses the logical state of an operand.

In the example below, assume a holds a value of 1 and b holds a value of 0.

a && b // value is FALSE
a || b // value is TRUE
a ^^ b // value is TRUE
!b     // value is TRUE
!a     // value is FALSE

Relational operators produce boolean results (TRUE or FALSE) while comparing two operands. The following tables list the relational operands which are available in GPC.

Operator

Description

==

Equal to, if the left operand holds the same value as the right then the condition becomes TRUE

!=

Not equal to, if the left operand does not hold the same value as the right then the condition becomes TRUE

>

Greater than, if the left operand holds a value greater than the left then the condition becomes TRUE

<

Less than, if the left operand holds a value less than the left then the condition becomes TRUE

>=

Greater than or equal to, if the left operand holds a value which is greater than or equal to the right then the condition becomes TRUE

<=

Less than or equal to, if the left operand holds a value which is less than or equal to the right then the condition becomes TRUE

In the example below, assume a holds a value of 30 and b holds a value of 10.

a == b // is FALSE
a != b // is TRUE
a >  b // is TRUE
a <  b // is FALSE
a >= b // is TRUE
a <= b // is FALSE

Binary is the same as Logical, except they work with bits.

Operators

Description

&

AND operator, if both operators are TRUE then the condition becomes TRUE

|

OR operator, if either operand is TRUE then the condition becomes TRUE

^

XOR operator, if either operand is TRUE but not both then the condition becomes TRUE

<<

Left Shift operator, Less than, if the left operand holds a value less than the left then the condition becomes TRUE

>>

Right Shift operator, Greater than, if the left operand holds a value greater than the left then the condition becomes TRUE

-

NOT operator, Subtracts right operand from the left operand

In the example below,

3 & 1 = 1
1 | 2 = 3
1 ^ 2 = *
1 << 1 = 2
1 >> 1 = 0
~ 1 = -32768

PreviousPersistent MemoryNextIdentifiers

Last updated 3 years ago

Was this helpful?