Exercise 1: $x = "42" vs. $x = 42 — Possible Solution ==================================================================== .GetType().Name FOR EACH ------------------------------ $x = "42" produces a variable whose .GetType().Name reports "String" - the quotes make it text, regardless of the fact that the text looks numeric. $x = 42, with no quotes, produces a variable whose .GetType().Name reports "Int32" - a real number type. WHAT $x + 8 DOES IN EACH CASE ------------------------------ When $x is the string "42", $x + 8 produces "428" - since $x is a string and no cast made it a number, + falls back to string concatenation, appending "8" onto the end of "42" as text. When $x is the integer 42, $x + 8 produces 50 - real arithmetic addition, since both operands are already numbers. THE REASONING, PER THIS CHAPTER'S OWN CASTING EXAMPLE ------------------------------ This chapter's own casting example showed the identical pattern: [int]"42" + 8 equals 50 (real addition, because casting to [int] first made "42" a genuine number), while "42" + 8 with no cast equals "428" (string concatenation, because "42" stayed a string). The exact same logic applies here - whether + behaves as arithmetic or as concatenation depends entirely on whether $x is actually a number or actually a string, not on what the digits look like. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly predicts String vs. Int32 for the two GetType() calls, correctly predicts string concatenation ("428") vs. real addition (50) for the two + operations, and correctly grounds both predictions in this chapter's own worked casting example rather than treating the two cases as unrelated facts.