หน่วยที่ 2 โครงสร้างภาษาซีเบื้องต้น (พิเศษ)

รูปแบบการประกาศตัวแปรในภาษาซี

          การประกาศตัวแปร (variable declaration) คือ การจองเนื้อที่ในหน่วยความจำสำหรับเก็บค่า พร้อมกำหนดชื่อเรียกแทนหน่วยความจำในตำแหน่งนั้นเพื่อให้ผู้เขียนโปรแกรมมีความสะดวกในการเข้าถึงค่าที่เก็บอยู่ในหน่วยความจำ

          การเขียนคำสั่งเพื่อประกาศตัวแปร ส่วนใหญ่แล้วจะเขียนไว้ที่ส่วนหัวของโปรแกรมก่อนฟังก์ชัน main() ซึ่งการเขียนไว้ในตำแหน่งดังกล่าว จะทำให้ตัวแปรเหล่านั้นสามารถเรียกใช้จากที่ใดก็ได้ในโปรแกรม

           การสร้างตัวแปรขึ้นมาใช้งาน จะเรียกว่า การประกาศตัวแปร  โดยเขียนคำสั่งให้ถูกต้องตามรูปแบบการประกาศตัวแปร ซึ่งแสดงได้ดังนี้  type name;

  • type : ชนิดของตัวแปร
  • name : ชื่อของตัวแปร ซึ่งต้องตั้งให้ถูกต้องตามหลักการของภาษาซี          

          ตัวอย่างการประกาศตัวแปรแบบต่างๆ
int num; /*ประกาศตัวแปรชนิดจำนวนเต็ม ชื่อ num*/
float x;
char grade, sex; /*ประกาศตัวแปรชนิดอักขระ ชื่อ grade และ sex (ประกาศพร้อมกันในบรรทัดเดียว)*/
float temp = 123.45; /*ประกาศตัวแปรชนิดเลขทศนิยมพร้อมกำหนดค่า 123.45*/
char c = "A", t = "B"; /*ประกาศตัวแปรชนิดอักขระสองตัว พร้อมกำหนดค่าให้แต่ละตัว*/
int oct = 0555; /*จำนวนเต็มชื่อ oct พร้อมกำหนดค่าคือ 555 (เป็นเลขฐานแปดเพราะมี 0 นำหน้า)*/
int hex = 0x88; /*จำนวนเต็มชื่อ hex พร้อมกำหนดค่าคือ 88 (เป็นเลขฐาน 16 เพราะมี 0x นำหน้า)*/

          ตัวอย่างโปรแกรมรูปแบบการประกาศตัวแปรในภาษาซี

#include <stdio.h>

int num1;
float num2;
double num3;
void main()
{
    printf("Enter num1 :");
    scanf("%d",&num1);
    printf("Enter num2 :");
    scanf("%f",&num2);
    printf("Enter num3 :");
    scanf("%lf",&num3);
    printf("Input : %d %f %lf",num1,num2,num3);
}

// หมายเหตุ คำสั่ง scanf ตัวแปรชนิดข้อความและตัวอักขระไม่ต้องใส่


ตารางแสดงรหัสควบคุมลักษณะ (Format String) ได้แก่ 

          หมายเหตุ

  • พิมพ์เลขทศนิยม double ใช้ %lf
  • พิมพ์เลขจำนวนเต็ม (integer : int) ใช้ %d

ตารางแสดงชนิดของตัวแปรและขอบเขตการใช้งานในภาษาซี


กฎของการแปลงชนิดของข้อมูล (Data Type Conversion)

          กฎของการแปลงแบ่งการแปลงเป็น 2 แบบ คือ 

  1. แปลงชนิดข้อมูลอัตโนมัติโดยคอมไพเลอร์ (Implicit Type Conversion) แปลงชนิดข้อมูลที่มีค่าน้อยสำคัญต่ำไปเป็นชนิดข้อมูลเดียวกันกับข้อมูลที่มีค่านัยสำคัญสูงกว่า โดยอัตโนมัติ โดยมีภาพแสดงลำดับความสำคัญ ดังต่อไปนี้
     ตัวอย่าง  เช่น
    • ประกาศข้อมูลชนิด int ร่วมกับ long หรือคำนวณ int + long จะได้ข้อมูลชนิด long [ เพราะ long มีลำดับสูงกว่า int ]
    • ประกาศข้อมูลชนิด int ร่วมกับ double หรือคำนวณ int / double จะได้ข้อมูลชนิด double [ เพราะ double มีลำดับสูงกว่า int ]
    • ประกาศข้อมูลชนิด char ร่วมกับ float จะได้ข้อมูลชนิด float [ เพราะ float มีลำดับสูงกว่า char ] หมายเหตุ char เป็นชนิดตัวอักขระไม่สามารถคำนวณได้
    • สมมติ โจทย์ (ch / i )  + (f * d) - (f + i)  กำหนด char , int , float , double
    • เป็นต้น
       
       
  2. แปลงชนิดข้อมูลตามต้องการด้วยตนเอง (Explicit Type Conversion)  
    ใช้คำสั่งควบคุมโดยมีรูปแบบดังนี้ (ชนิดข้อมูลDesc) นิพจน์หรือตัวแปรที่ต้องการแปลงข้อมูล 

            ตัวอย่าง เช่น กำหนด ค่า A มีชนิดข้อมูลเป็น int และ ค่า B มีชนิดข้อมูลเป็น long int 

  • คำสั่งควบคุม (float)A  โดยเขียน คือ AA = (float)A ดังนั้น A จะถูกแปลงเป็น float ใส่ค่าใน AA
  • คำสั่งควบคุม (int)B โดยเขียน คือ BB = (int)B ดังนั้น B จะถูกแปลงเป็น int ใส่ค่าใน BB
  • CC = (float)(A+B) แปลงค่าเป็น float ส่งค่าชนิดข้อมูลให้ CC
  • เป็นต้น (หมายเหตุ การแปลงค่าตามต้องการต้องระวังเรื่องขอบเขตชนิดของข้อมูล)