user29004: I often see code like this:
const int piezo = A0;
const int sensorPin = A1;

From my understanding, an int variable can hold things like -123, 0, 1, 456, etc. 
How can A0 or A1 be an int?

user368: They are defined in the Arduino libraries, and the Arduino libraries will translate them into the appropriate pins and registers before they are used. But in the meantime they're numbers.

user4143: The board definition (pins_arduino.h) has this:
static const uint8_t A0 = 14;
static const uint8_t A1 = 15;
static const uint8_t A2 = 16;
static const uint8_t A3 = 17;
static const uint8_t A4 = 18;
static const uint8_t A5 = 19;
static const uint8_t A6 = 20;
static const uint8_t A7 = 21;

Since A0 is a constant variable equal to 14, if you assign that to a variable, it just assigns 14.
In other words: 
A = 14.
B = A.
Therefore B = 14.


29004: <p>I often see code like this:</p>

<pre><code>const int piezo = A0;
const int sensorPin = A1;
</code></pre>

<p>From my understanding, an int variable can hold things like -123, 0, 1, 456, etc. </p>

<p>How can A0 or A1 be an int?</p>
 368: <p>They are defined in the Arduino libraries, and the Arduino libraries will translate them into the appropriate pins and registers before they are used. But in the meantime they're numbers.</p>
 4143: <p>The board definition (pins_arduino.h) has this:</p>

<pre><code>static const uint8_t A0 = 14;
static const uint8_t A1 = 15;
static const uint8_t A2 = 16;
static const uint8_t A3 = 17;
static const uint8_t A4 = 18;
static const uint8_t A5 = 19;
static const uint8_t A6 = 20;
static const uint8_t A7 = 21;
</code></pre>

<p>Since A0 is a constant variable equal to 14, if you assign that to a variable, it just assigns 14.</p>

<p>In other words: </p>

<pre><code>A = 14.
B = A.
Therefore B = 14.
</code></pre>
