[ภาษาซี] ค่าคงที่และัการเก็บค่าที่มากกว่าเดิม
posted on 21 May 2009 14:03 by mistertun in CProgrammingค่าคงที่คืออะไร
ค่าคงที่ก็คือตัวแปรที่เราไม่สามารถเปลี่ยนแปลงค่าได้ครับ คือกำหนดค่าไว้เท่าไหร่ เราจะเปลี่ยนค่าไม่ได้ไปตลอดโปรแกรม ซึ่งมีวิธีประกาศหลายแบบ
1.ใช้ preprocessor directive : define
จำสิ่งที่เรียกว่า preprocessor ไ้ด้มั้ย ที่มันจะขึ้นต้นด้วย "#" เช่น
#include ครับ การประกาศค่าคงที่เราก็จะใช้ preprocessor เช่นกัน
แต่จะใช้ #define แทน #define เป็นเพื่อนกับ #include ครับ
เวลาประกาศเราก็ประกาศไว้แถวๆ #include นั่นแหละ ถือเป็นส่วนเดียวกัน
วิธีการคือ
#define ชื่อตัวแปร ค่าตัวแปร
เช่น
#define PI 3.141593
#define NAME "handsome"
#define AGE "14"
ซึ่งเวลาเราประกาศแบบนี้ เราไม่ต้องบอกชนิดข้อมูล(int char long float double ...)นะครับ โปรแกรมจะกำหนดให้เราเอง การตั้งชื่อค่าคงที่นิยมใช้พิมพ์ใหญ่ครับ เพื่อกันความสับสน ดูตัวอย่างโปรแกรมคำนวณพื้นที่และเส้นรอบรูปวงกลมนะครับ
#include [stdio.h] // change [ , ] to < , >
#define PI 3.141593
int main()
{
float radius
scanf("%f",&radius);
printf("Area = %f\n",PI*radius*radius);
printf("Circumference = %f",2*PI*radius);
scanf(" ");
return 0;
}
แบบนี้พอเข้าใจมั้ยครับ จริงๆเราประกาศใน main ก็ได้นะ
int main()
{
#define NAME "handsome"
ไม่ต้องมีเซมิโคลอนนะครับ
2.ใช้คำสงวน const (constant)
เป็นอีกวีธีนึงนะครับ เวลาระกาศ เหมือนประกาศตัวแปรทั่วไปทุกอย่าง
เพียงแต่เอาคำว่า const ไปแปะไว้ข้างหน้าเท่านั้นเอง ดูรูปแบบนะครับ
const ชนิดข้อมูล ชื่อตัวแปร = ค่า;
เช่น
const float PI = 3.141593;
3.ประกาศแบบยกชุดด้วย enum
เป็นรูปแบบสุดท้ายครับ ใช้ประกาศทีละหลายๆตัว มีรูปแบบคือ
enum {ชื่อตัวแปร = ค่า,ชื่อตัวแปร = ค่า...};
เช่น
enum { a=5,b=10,c=9,d=9};
หรือเราอาจจะไม่กำหนดค่าก็ได้ครับ มันจะกำหนดค่าให้อัตโนมัติ ไล่ตั้งแต่ 0 1 2 3...
enum {a,b,c,d};
แบบนี่ก็จะได้ a=0 b=1 c=2 d=3 ...
หรืออาจจะกำหนดแค่บางตัว ตัวต่อไปมันจะไล่ค่าไปให้ เช่น
enum { a=5,b,c,d};
พอเราให้ a เป็น 5 ตัวต่อไปก็จะเป็น 6 7 8... ตามลำดับ
การเก็บค่าในตัวแปรให้ได้มากเป็นสองเท่า!!!
ง่ายๆครับ ด้วยการเอา "unsigned" ไปไว้ข้างหน้าตอนประกาศ(เหมือนเวลาใส่ const) จากตัวแปรที่เก็บค่าได้ -127 ถึง 128 มันจะเก็บได้ 0 ถึง 255 หรือถ้าเคยเก็บได้ -32767 ถึง 32768 มันจะกลายเป็น 0-65537 คือเอาด้านลบมาต่อที่ด้านบวกนั่นเอง เช่น
unsigned int a;
ถ้าสอนคนที่ไม่เคยเขียนโปรแกรมเลย
น่าจะ Print Screen มาแป๊ะไว้นะครับ
คนที่เข้ามาเรียนรู้จะเห็นภาพว่าสุดท้ายแล้ว
ผมลัพภ์ของค่าตัวแปรต่างๆที่เวลา print ออกมาแล้วจะเป็นยังไงนะครับ
แต่เขียนดีแล้วนะครับเป็กำลังใจให้ครับ
#1 By YiUM ชีวิตจริงไม่เหมือนฝัน on 2009-05-21 14:16