ตัวดำเนินการ (Operator) ใช้ระบุการดำเนินการกับออบเจ็กต์หนึ่งหรือหลายตัว มีความหมายในนิพจน์และการประกาศ โดยทั่วไปเป็นลำดับสั้นของตัวอักษรที่ไม่ใช่ alphanumeric
เครื่องหมายวรรคตอน (Punctuator) ใช้แยกหรือจบรายการองค์ประกอบ
รายการตัวดำเนินการและเครื่องหมายวรรคตอนใน C:
... && -= >= ~ + ; ] <<= &= -> >> % , < ^ >>= *= /= ^= & - = { != ++ << |= ( . > | %= += <= || ) / ? } ## -- == ! * : [ #
หมายเหตุ: บางลำดับใช้ได้ทั้งเป็นตัวดำเนินการและเครื่องหมายวรรคตอน เช่น *, =, :, # และ ,
เครื่องหมายวรรคตอนบางตัวต้องใช้เป็นคู่ เช่น ( ), [ ], { }
เมื่อคอมไพเลอร์แยก token จะพยายามสร้างลำดับที่ยาวที่สุดเท่าที่จะเป็นไปได้ เช่น a+++++b จะถูกตีความเป็น:
a ++ ++ + b (ไม่ถูกต้อง)
แทนที่จะเป็น:
a ++ + ++ b (อาจถูกต้องได้)