โปรแกรมุ #1void main()
{
}
โปรแกรมุ #1โปรแกรมุน��ที่�าอะไร?
ไมุ�ได้�ที่�าอะไรข�างิในไมุ�มุ�ค�าสั่��งิอะไรเลยเข�ามุาแล�วก"ออกไป
โปรแกรมุ #1main() ค#ออะไร?
ฟั%งิก&ชั�นฟั%งิก&ชั�นค#ออะไร?
โปรแกรมุย�อยที่�าหน�าที่��เฉพาะตั�วอย�างิหน,�งิให�โปรแกรมุใหญ่�เร�ยกใชั�
แล�วโปรแกรมุใหญ่�ล�ะ?ระบบปฏิ�บ�ตั�การ (OS)
โปรแกรมุ #2#include <stdio.h>
void main()
{
printf(“Hello, world!\n”);
}
โปรแกรมุ #2โปรแกรมุน��ที่�าอะไร?
พ�มุพ& Hello, world!
โปรแกรมุ #2#include <stdio.h> ค#ออะไร?
ใชั�บอกว�าเราจะไปเอาฟั%งิก&ชั�นจากไฟัล&ชั#�อ stdio.h มุาใชั�stdio.h เป0นไฟัล&ที่��เราเร�ยกว�า header fileมุ�นบรรจ�ชั#�อและข�อมุ1ลอ#�นๆ ของิฟั%งิก&ชั�นที่��ฟั%งิก&ชั�น main
ของิเราจะไปเร�ยกใชั�ได้�
โปรแกรมุ #2#include <stdio.h> ค#ออะไร?
ใชั�บอกว�าเราจะไปเอาฟั%งิก&ชั�นจากไฟัล&ชั#�อ stdio.h มุาใชั�stdio.h เป0นไฟัล&ที่��เราเร�ยกว�า header fileมุ�นบรรจ�ชั#�อและข�อมุ1ลอ#�นๆ ของิฟั%งิก&ชั�นที่��ฟั%งิก&ชั�น main
ของิเราจะไปเร�ยกใชั�ได้�เราใชั�ฟั%งิก&ชั�นอะไรจาก stdio.h?
printf
โปรแกรมุ #2printf มุ�ไว�ที่�าอะไร?
พ�มุพ&ข�อความุออกที่างิ standard outputstandard output ค#ออะไร?
ชั�องิที่างิแสั่ด้งิผลล�พธ์&ที่��ระบบปฏิ�บ�ตั�การสั่ร�างิให�โปรแกรมุตัามุปกตั�
สั่�วนมุากค#อหน�าจอแตั�เราสั่ามุารถบอกให�ระบบปฏิ�บ�ตั�การตั�อ standard
output เข�าไฟัล&หร#อการ&ด้เน"ตัเว�ร&กก"ได้�
โปรแกรมุ #2“Hello, world!\n” ค#ออะไร?
ข�อมุ1ลประเภที่ข�อความุภาษา C เร�ยกข�อมุ1ลประเภที่น��ว�า สตริ�ง (string)ในภาษา C เราเข�ยนข�อความุประเภที่ string ได้�ด้�วยการใชั�
เคร#�องิหมุายฟั%นหน1 (“) ล�อมุรอบข�อความุที่��ตั�องิการตั�วอย�างิเชั�น “one”, “Franscesca Lucchini”,
“3.1415”
โปรแกรมุ #2อ�าว! ที่�าไมุพ�มุพ&ออกมุาแล�วไมุ�เห"นมุ� \n?
ข�อความุ \n เป0นข�อความุพ�เศษเร�ยกว�า escape sequenceตั�ว \n แที่น การิเว้นบริริทั�ด
โปรแกรมุ #3ผลล�พธ์&ของิโปรแกรมุน��ควรจะเป0นอย�างิไร?
#include <stdio.h>
void main()
{
printf(“one\ntwo\nthree\n”);
printf(“four\nfive\nsix\n”);
}
โปรแกรมุ #3one
two
three
four
five
six
Escape Sequence อ#�นๆEscape Sequence คว้ามหมาย
\t อ�กขระ tab
\0 อ�กขระ NULL (ใชั�สั่��นสั่�ด้สั่ตัร�งิ)
\’ อ�กขระ ‘ (ฝนที่องิ)
\” อ�กขระ “ (ฟั%นหน1)\\ อ�กขระ \ (backspace)
แบบฝ:กห�ด้ #1เข�ยนโปรแกรมุเพ#�อพ�มุพ&ข�อความุ
a\b\\”c”
de’f’
แบบฝ:กห�ด้ #1#include <stdio.h>
void main()
{
printf(“a\\b\\\\\”c\”\n”);
printf(“de\’f\’”);
}
แบบฝ:กห�ด้ #1#include <stdio.h>
void main()
{
printf(“a\\b\\\\\”c\”\n”);
printf(“de’f’”);
}
เคร#�องิหมุายเซมุ�โคลอน (;)เวลาเราเร�ยกฟั%งิก&ชั�นหน,�งิคร,�งิ ถ#อเป0นค�าสั่��งิหน,�งิค�าสั่��งิ
มุ�ค�าสั่��งิแบบอ#�นๆ อ�กมุากมุายที่��จะได้�เร�ยนทั�กค�าส��งตองจบดว้ยเคริ��องหมายเซม�โคลอน (;) เสมอระว�งิใสั่�เคร#�องิหมุายเซมุ�โคลอนหล�งิที่�กค�าสั่��งิด้�วย
โปรแกรมุ #4#include <stdio.h>
void main(){printf(“First value is %d.\n”, 5);printf(“Second value is %d.\n”, 7);
}
โปรแกรมุ #4printf(“First value is %d.”, 5);
ข�อมุ1ลที่��เราป<อนให�ฟั%งิก&ชั�นเวลาสั่��งิให�มุ�นที่�างิาน เร�ยกว�า อาริ�ก�ว้เมนต� (argument)
เวลามุ� argument หลายๆ ตั�ว เราจะค��นมุ�นด้�วยเคร#�องิหมุายคอมุมุา (,)
ตัอนน�� printf มุ� argument สั่องิตั�ว
สั่ตัร�งิ “First value is %d.” ตั�วเลขจ�านวนเตั"มุ 5
โปรแกรมุ #4อาร&ก�วเมุนตั&ตั�วแรกของิ printf จะตั�องิเป0นสั่ตัร�งิเสั่มุอ
เพราะมุ�นค#อข�อความุที่��เราจะพ�มุพ&ออกไปแล�วอาร&ก�วเมุนตั&ตั�วอ#�นๆ ที่��ตัามุมุาล�ะ?
มุ�นจะถ1กน�าไปแที่นค�าใสั่�ใน ชุ�ดอ�กขริะจ�ดริ"ปแบบแล�วชั�ด้อ�กขระจ�ด้ร1ปแบบที่��ว�าน��นอย1�ไหน?
“First value is %d.”%d บอกว�ามุ�นจะพ�มุพ&ค�าที่��เอามุาแที่นเป0น เลขฐานส�บ
(decimal)
โปรแกรมุ #4ผลล�พธ์&ของิโปรแกรมุ
First value is 5.
Second value is 7.
โปรแกรมุ #5#incluce <stdio.h>
void main()
{
printf(“Sum of %d and %d is %d.\n”, 9, 4, 9+4);
printf(“Difference of %d and %d is %d.\n”,9, 4, 9-4);
printf(“Product of %d and %d is %d.\n”, 9, 4, 9*4);
printf(“Quotient of %d by %d is %d\n”, 9, 4, 9/4);
printf(“Modulus of %d by %d is %d\n”, 9, 4, 9%4);
}
โปรแกรมุ #5ผลล�พธ์&
Sum of 9 and 4 is 13.
Difference of 9 and 4 is 5.
Product of 9 and 4 is 36.
Quotient of 9 and 4 is 2.
Modulus of 9 and 4 is 1.
โปรแกรมุ #5 printf(“Sum of %d and %d is %d.\n”, 9, 4, 9+4);
แสั่ด้งิให�เราเห"นว�า printf จะมุ� argument ก��ตั�วก"ได้�
argument ตั�วที่��ตัามุหล�งิมุาจะถ1กน�าไปแที่รกที่��อ�กขระจ�ด้ร1ปแบบตัามุล�าด้�บที่��อ�กขระจ�ด้ร1ปแบบปรากฏิ
โปรแกรมุ #59+4, 9-4, 9*4, 9/4 และ 9%4
เราเร�ยกพวกน��ว�า น�พจน�น�พจน&มุ�ผลล�พธ์& ซ,�งิจะเป0นค�าหน,�งิค�า
เคร#�องิหมุายสั่�าหร�บการค�านวณเชั�งิคณ�ตัศาสั่ตัร&เคร#�องิหมุาย + และ - แที่นการบวกและการลบ ตัามุล�าด้�บเคร#�องิหมุาย * แที่นการค1ณเคร#�องิหมุาย / แที่นการหาร
ถ�าเอาจ�านวนเตั"มุมุาหารก�นก"จะได้�จ�านวนเตั"มุเคร#�องิหมุาย % แที่นการหารเอาเศษ
โปรแกรมุ #5เคร#�องิหมุายพวกน��มุ�ล�าด้�บความุสั่�าค�ญ่เหมุ#อนก�บในที่างิ
คณ�ตัศาสั่ตัร&+ และ – มุ�ความุสั่�าค�ญ่เที่�าก�น* และ / และ % มุ�ความุสั่�าค�ญ่เที่�าก�น* และ / และ % มุ�ความุสั่�าค�ญ่มุากกว�า + และ –
เราสั่ามุารถใชั�วงิเล"บเพ#�อจ�ด้ล�าด้�บการค�านวณได้�
แบบฝ:กห�ด้ #2ผลล�พธ์&ของิโปรแกรมุน��ค#ออะไร?
#include <stdio.h>
void main(){printf(“%d\n”, 7+10%3);printf(“%d\n”, (7+10)%3);printf(“%d\n”, 7+10%3*4-(5*20));
}
แบบฝ:กห�ด้ #282-89
โปรแกรมุ #6#incluce <stdio.h>
void main()
{
printf(“%f + %f = %f\n”, 9.0, 4.0, 9.0+4.0);
printf(“%f - %f = %f\n”, 9.0, 4.0, 9.0-4.0);
printf(“%f * %f = %f\n”, 9.0, 4.0, 9.0*4.0);
printf(“%f / %f = %f\n”, 9.0, 4.0, 9.0/4.0);
}
โปรแกรมุ #6ผลล�พธ์&ของิโปรแกรมุ
9.000000 + 4.000000 = 13.000000
9.000000 - 4.000000 = 13.000000
9.000000 * 4.000000 = 36.000000
9.000000 / 4.000000 = 2.250000
โปรแกรมุ #6ภาษา C สั่ามุารถจ�ด้การเลขที่ศน�ยมุได้�เชั�นก�นค�าของิเลขที่ศน�ยมุ เวลาพ�มุพ&ตั�องิมุ�จ�ด้ที่ศน�ยมุ มุ�ฉะน��น
ภาษา C จะค�ด้ว�าเป0นจ�านวนเตั"มุมุ�เคร#�องิหมุายที่��เราใชั�ได้�สั่��เคร#�องิหมุายค#อ +, -, *, /เวลาเอาเลขที่ศน�ยมุไปหารเลขที่ศน�ยมุก"จะได้�เลขที่ศน�ยมุ
กล�บมุาเราสั่ามุารถพ�มุพ&ค�าเลขที่ศน�ยมุได้�ด้�วยอ�กขระจ�ด้ร1ปแบบ
%f
โปรแกรมุ #7#include <stdio.h>
void main()
{
int age;
age = 15;
printf(“The child age is %d\n”, age);
}
โปรแกรมุ #7ผลล�พธ์&ของิโปรแกรมุ
The child age is 15.
ตั�วแปร (Variable)ตั�าแหน�งิในหน�วยความุจ�า เก"บข�อมุ1ลหน,�งิชั��นตั�วแปรตั�องิมุ� ชุ��อตั�วแปรชั�วยให�เราแที่น ขอม"ล ด้�วย ชุ��อ ที่�าให�ไมุ�จ�าเป0นตั�องิ
ร1 �ค�าของิมุ�น
ในโปรแกรมุ #7 มุ�ตั�วแปรหน,�งิตั�ว ชั#�อ ageเราพ�มุพ&ค�าของิ age ออกที่างิด้�วย printf ได้�เหมุ#อนก�บ
พ�มุพ&ค�าตั�วเลข
printf(“The child age is %d\n”, age);
การประกาศตั�วแปรเป0นการบอกว�า
มุ�ตั�วแปรชั#�อน��ตั�วแปรชั#�อที่��เราประกาศชัน�ด้อะไร
ถ�าจะประกาศตั�วแปรแค�ตั�วเด้�ยว ให�สั่� �งิ
ชุน�ดขอม"ล ชั#�อตั�วแปร1;
หร#อถ�าจะประกาศพร�อมุก�นที่�ละหลายๆ ตั�วก"ได้�
ชุน�ดขอม"ล ชั#�อตั�วแปร 1, ชั#�อตั�วแปร 2, ชั#�อตั�วแปร 3, …, ชั#�อตั�วแปร n;
ตั�วอย�างิ
int age;
int x, y, z;
float area, length;
int ค#อชัน�ด้ของิตั�วแปรที่��เก"บจ�านวนเตั"มุแบบหน,�งิfloat ค#อชัน�ด้ของิตั�วแปรที่��เก"บจ�านวนจร�งิแบบหน,�งิ
การก�าหนด้ค�าให�ตั�วแปร (Assignment)ใชั�เคร#�องิหมุายเที่�าก�บ (=) โด้ยมุ�ร1ปแบบด้�งิน��
ชั#�อตั�วแปร = น�พจน&;ยกตั�วอย�างิเชั�น x = 5; หร#อ y = (10*3)%7;
ตั�วแปรก"สั่ามุารถเข�าไปอย1�ในน�พจน&ได้� เชั�น x = 10*y+y/5;แมุ�แตั�ตั�วแปรตั�วเด้�ยวก�นก"สั่ามุารถไปอย1�ที่� �งิสั่องิฟัากของิ
เคร#�องิหมุายเที่�าก�บได้�x = x+1;z = z*z + 2*z + 1
โปรแกรมุจะอ�านค�าที่��เก"บในหน�วยความุจ�ามุาใชั�ในการค�านวณที่างิด้�านซ�าย เมุ#�อค�านวณเสั่ร"จแล�วจะเอาผลล�พธ์&ไปเข'ยนทั�บลงิในตั�วแปรที่��อย1�ในด้�านขวาถ�า x เที่�าก�บ 5 หล�งิจากสั่��งิ x = x+1 จะได้� x เที่�าก�บ 6ถ�า z เที่�าก�บ 3 หล�งิจากสั่��งิ z = z*z + 2*z + 1 แล�ว z จะมุ�ค�า
เที่�าก�บ 16
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 632
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6325
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6325 32
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6325 632
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6325 632-33
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6325 632-33
32
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6325 632-33
32 5
แบบฝ:กห�ด้ #3#include <stdio.h>
void main()
{
int x, y, z;
x = 2; y = 5; z = 6;
x = x + y * z;
z = y – x - z;
y = 4 * x / y
printf(“%d %d %d\n”, x, y, z);
}
2 5 6325 632-33
32 524
โปรแกรมุ #3ผลล�พธ์&ของิโปรแกรมุ
32 24 -33
ชั#�อ (Identifier)ชั#�อในภาษา C จะตั�องิเป0นไปตัามุกฏิด้�งิน��
ประกอบข,�นจากตั�วเลข ตั�วอ�กษร หร#อเคร#�องิหมุาย underscore (_)name, student, a10, light_saber, _times, _101one man ไมุ�ใชั�ชั#�อชั#�อเด้�ยว แตั�เป0นชั#�อสั่องิชั#�อidolm@ster ไมุ�ใชั�ชั#�อที่��ถ1กตั�องิ
ตั�วอ�กขระตั�วแรกตั�องิไมุ�เป0นตั�วเลข10a ไมุ�ใชั�ชั#�อที่��ถ1กตั�องิ
ตั�วพ�มุพ&ใหญ่�และตั�วพ�มุพ&เลขถ#อเป0นคนละชั#�อก�นsalary, Salary, SALARY คนละชั#�อก�นที่��งิสั่��น
ชั#�อจะตั�องิไมุ�ซ��าก�บค�าสั่งิวน (reserved words)
ค�าสั่งิวน (Reserved Words)ค�าที่��เป0นสั่�วนประกอบของิภาษา C โด้ยตัรงิ ห�ามุใชั�เป0นชั#�อมุ� 36 ค�าสั่�งิเกตังิ�ายๆ เวลาพ�มุพ&โปรแกรมุใน IDE เก#อบที่�กตั�วแล�ว
สั่�ของิมุ�นจะแตักตั�างิก�บชั#�ออ#�นๆตัอนน��เราร1 � reserved words สั่องิค�า ค#อ
voidint
ตั�วแปรชัน�ด้ตั�างิๆมุ�ตั�วแปรพ#�นฐานอย1� 5 แบบ
int = เลขจ�านวนเตั"มุfloat = เลขที่ศน�ยมุความุละเอ�ยด้ตั��าdouble = เลขที่ศน�ยมุความุละเอ�ยด้สั่1งิ (กว�า float 2
เที่�า)char = ตั�วอ�กขระvoid = ไมุ�ระบ�ชัน�ด้
ตั�วแปรชัน�ด้ตั�างิๆสั่�าหร�บตั�วแปรประเภที่ int เราสั่ามุารถใสั่�ค�าเพ��มุเพ#�อก�าหนด้
เคร#�องิหมุายและความุสั่��นยาวได้�unsigned = เก"บเฉพาะค�าที่��ไมุ�เป0นลบshort = ให�ใชั�หน�วยความุจ�าน�อยลงิคร,�งิหน,�งิlong = ให�ใชั�หน�วยความุจ�าเพ��มุข,�นสั่องิเที่�า
ด้�งิน��นมุ�ชัน�ด้ตั�วแปรแบบ int ที่��เป0นไปได้�อย1� 6 แบบint, unsigned int,short int, unsigned short int,long int, unsigned long int
short int สั่ามุารถเข�ยนย�อเป0น short ได้�long int สั่ามุารถเข�ยนย�อเป0น long ได้�
ตั�วแปรชัน�ด้ตั�างิๆชุน�ดต�ว้แปริ จ�านว้นบ�ต ค(าต��าส�ด ค(าส"งส�ดint 32 -2,147,483,648 2,147,483,647
unsigned int 32 0 4,294,967,295
short 16 -32,768 32,767
unsigned short 16 0 65,536
long 32 -2,147,483,648 2,147,483,647
unsigned long 32 0 4,294,967,295
ตั�วแปรชัน�ด้ตั�างิๆสั่มุ�ยน�� (ตั�างิก�บประมุาณ 10 ป?ก�อน ) int ก�บ long มุ�
ความุหมุายเด้�ยวก�นถ�าอยากใชั�เลข 64 บ�ตัจร�งิ ให�ใชั�ตั�วแปรชัน�ด้ long long
ค�าตั��าสั่�ด้ -9,223,372,036,854,775,808ค�าสั่1งิสั่�ด้ 9,223,372,036,854,775,807
โปรแกรมุ #8#include <stdio.h>
void main()
{
int a = 1000000000;
short b = 1000000000;
long c = 1000000000;
long long d = 1000000000;
printf(“%d %d %d %d\n”, a, b, c, d);
}
โปรแกรมุ #8ผลล�พธ์&ของิโปรแกรมุ
1000000000 -13824 1000000000 100000000
โปรแกรมุ #8เราสั่ามุารถใชั� %d ก�บข�อมุ1ลประเภที่ int, short, long,
และ long long ได้�แตั�บางิคร��งิค�าของิ long long ที่��พ�มุพ&จะไมุ�ถ1กตั�องิ (เราจะด้1
เร#�องิน��ในโปรแกรมุ #9)เราสั่ามุารถก�าหนด้ค�าที่��เก�นขอบเขตัให�ตั�วแปรใด้ก"ได้�
ภาษา C จะไมุ�บ�น ไมุ�ฟั<องิ compile errorแตั�ค�าที่��ตั�วแปรน��นเก"บไว�จร�งิๆ จะไมุ�ตั�องิก�บค�าที่��เราก�าหนด้ให�เชั�น ก�าหนด้ค�า 1,000,000,000 ให� b แตั�ความุจร�งิมุ�น
เก"บ -13,824ตองริะว้�งไม(ใหค(าทั'�เริาก�าหนดใหต�ว้แปริเก�นขอบเขต
ของม�น
โปรแกรมุ #9#include <stdio.h>
void main()
{
int a = 1000000000000;
short b = 1000000000000;
long c = 1000000000000;
long long d = 1000000000000;
printf(“%d %d %d %d\n”, a, b, c, d);
}
โปรแกรมุ #9เราก�าหนด้ค�า 1,000,000,000,000 ให�ก�บตั�วแปรที่�ก
ตั�วค�าน��เก�นขอบเขตัของิ int และ long (ไมุ�ตั�องิพ1ด้ถ,งิ
short)ด้�งิน��นน�าจะได้�ผลล�พธ์&ค#อเลขตั�วสั่�ด้ที่�ายที่��พ�มุพ&ออกมุาน�าจะ
เที่�าก�บ 1,000,000,000,000 แค�ตั�วเด้�ยวแตั�ผลล�พธ์&ที่��ได้�จร�งิๆ ค#อ:
-727379968 4096 -727379968 -727379968
โปรแกรมุ #9เก�ด้อะไรข,�น?เวลาใชั� %d มุ�นจะค�ด้ว�าค�าที่��ให�มุาเป0น int ซ,�งิมุ�ขนาด้ 32
บ�ตัหากตั�องิการพ�มุพ&ค�า 64 บ�ตัของิ long long จะตั�องิใชุ
%lld แทัน
โปรแกรมุ #10#include <stdio.h>
void main()
{
int a = 1000000000000;
short b = 1000000000000;
long c = 1000000000000;
long long d = 1000000000000;
printf(“%lld %lld %lld %lld\n”, a, b, c, d);
}
โปรแกรมุ #10ผลล�พธ์&ของิโปรแกรมุ
-727379968 4096 -727379968 1000000000000
อธ์�บายได้�หร#อไมุ�?ตั�วแปร a, b, และ c ถ1กก�าหนด้ค�าที่��เก�นความุสั่ามุารถของิ
มุ�น ด้�งิน��นจ,งิเก"บค�าที่��ผ�ด้อย1�แล�วตั�วแปร d เป0นตั�วแปรประเภที่ long long เมุ#�อพ�มุพ&ค�าด้�วย
%lld จ,งิที่�าให�ได้�ค�าที่��ถ1กตั�องิออกมุา แตั�ถ�าใชั� %d มุ�นจะถ1กค�ด้ว�าเป0น int
อ�กขระจ�ด้ร1ปแบบอ#�นๆ สั่�าหร�บตั�วแปรประเภที่จ�านวนเตั"มุ
ถ�าอยากให�ค�ด้ว�าค�าที่��ให�เป0น long long ให�เตั�มุ ll ไปข�างิหน�า %lld, %llo, %llx, %llX, %llu
ถ�าอยากให�ค�ด้ว�าค�าที่��ให�เป0น short ให�เตั�มุ h ไปข�างิหน�า%hd, %ho, %hx, %hX, %hu
ถ�าอยากให�ค�ด้ว�าค�าที่��ให�เป0น long ให�เตั�มุ l ไปข�างิหน�า%ld, %lo, %lx, %lX, %lu
อ�กขริะจ�ดริ"ปแบบ คว้ามหมาย%o เลขฐาน 8 (Octal)
%x เลขฐาน 16 (heXadecimal) ใชั�ตั�วพ�มุพ&เล"ก
%X เลขฐาน 16 ใชั�ตั�วพ�มุพ&ใหญ่�%u ให�ค�ด้ว�าค�าที่��ให�มุาเป0นตั�วแปรแบบ
unsigned
โปรแกรมุ #10#include <stdio.h>void main(){
int x = 253;int y = -1*x;printf(“%d %u %o %x %X\n”, x, x, x, x, x);printf(“%d %u %o %x %X\n”, y, y, y, y, y);
}
โปรแกรมุ #10ผลล�พธ์&ของิโปรแกรมุ
253 253 375 fd FD
-253 4294967043 37777777403 ffffff03 FFFFFF03
โปรแกรมุ #10ที่�าไมุ -253 พ�มุพ&ออกมุาด้�วย %u แล�วได้�ค�า
4294967043?เพราะการเก"บค�าของิ -253 ในตั�วแปรชัน�ด้ int ใชั�ร1ปแบบของิบ�ตั
เด้�ยวก�นก�บ 4294667043 ในตั�วแปรชัน�ด้ unsigned intเราจะด้1ร1ปแบบของิบ�ตัได้�ที่��ไหน?
ด้1ที่��เลขฐาน 16 หร#อเลขฐาน 8
ถ�าอยากร1 �ความุหมุายของิร1ปแบบบ�ตัเหล�าน�� ให�ด้1การเก"บข�อมุ1ลจ�านวนเตั"มุแบบ Two’s Complement
สั่�งิเกตัว�าการพ�มุพ&ตั�วเลขในร1ปเลขฐาน 8 และเลขฐาน 16 จะค�ด้ว�าเลขไมุ�ใชั�ลบเสั่มุอเพราะมุ�นจะพ�มุพ&ไปตัามุร1ปแบบของิบ�ตั
1111 1111 1111 1111 1111 1111 0000 0011
F F F F F F 0 3
sizeofเราสั่ามุารถหาจ�านวนไบตั&ที่��ใชั�เก"บข�อมุ1ลชัน�ด้หน,�งิๆ ได้�โด้ย
ใชั�เคร#�องิหมุาย sizeof โด้ยมุ�ร1ปแบบการใชั�ด้�งิน��sizeof(ชัน�ด้ของิข�อมุ1ล)
ยกตั�วอย�างิเชั�นsizeof(int)sizeof(unsigned long long)sizeof(short)sizeof(unsigned long)
โปรแกรมุ #11#include <stdio.h>
void main()
{
printf("The number of bytes in an int is %d.\n", sizeof(int));
printf("The number of bytes in a short int is %d.\n", sizeof(short));
printf("The number of bytes in a long int is %d.\n", sizeof(long));
printf("The number of bytes in a long long is %d.\n", sizeof(long long));
}
โปรแกรมุ #11ผลล�พธ์&ของิโปรแกรมุ
The number of bytes in an int is 4.
The number of bytes in a short int is 2.
The number of bytes in a long int is 4.
The number of bytes in a long long is 8.
ตั�วแปรประเภที่ charเราสั่ามุารถค�ด้ว�ามุ�นแที่นค�าได้�สั่องิแบบ
ตั�วอ�กษร เชั�น a, B, c, +, -, ., !เลข 8 บ�ตั มุ�ค�าตั��งิแตั� -128 ถ,งิ 127
เวลาจะพ�มุพ&ค�าของิ charใชั� %d ถ�าตั�องิการพ�มุพ&ค�าตั�วเลขตั��งิแตั� -128 ถ,งิ 127ใชั� %u ถ�าตั�องิการพ�มุพ&ค�าตั�วเลขตั��งิแตั� 0 ถ,งิ 255ใชั� %c ถ�าตั�องิการพ�มุพ&ตั�วอ�กษร
โปรแกรมุ #12#include <stdio.h>
void main()
{
char x = 65;
printf("x as a number is %d.\n", x);
printf("x as a character is %c.\n", x);
}
โปรแกรมุ #12ผลล�พธ์&ของิโปรแกรมุ
x as a number is 65.
x as a character is A.
รห�สั่ ASCIIที่�าไมุค�า 65 ถ,งิพ�มุพ&ออกมุาแล�วได้�ตั�ว A?
เพราะ 65 ค#อรห�สั่ ASCII ของิตั�วอ�กษร Aรห�สั่ ASCII ค#อรห�สั่ที่��ยอมุร�บก�นเป0นมุาตัราฐานให�ใชั�แที่นตั�ว
อ�กษรที่��ปรากฏิอย1�บนค�ย&บอร&ด้และตั�วอ�กษรที่��ใชั�บ�อยหลายๆ ตั�ว
ตั�วแปรประเภที่ charเราสั่ามุารถเข�ยนค�าตั�วอ�กษรในภาษา C ได้�ให�ใชั�เคร#�องิหมุายฟั%นหน1 (‘) ล�อมุรอบตั�วอ�กษรน��น
‘a’‘B’‘+’‘9’
โปรแกรมุ #13#include <stdio.h>
void main()
{
char x = '9';
printf("x as a number is %d.\n", x);
printf("x as a character is %c.\n", x);
}
โปรแกรมุ #13ผลล�พธ์&ของิโปรแกรมุ
x as a number is 57.
x as a character is 9.
ตั�วแปรประเภที่ charเน#�องิจากตั�วแปรประเภที่ char จร�งิๆ แล�วค#อตั�วเลข
จ�านวนเตั"มุ ด้�งิน��นค�ณจ,งิสั่ามุารถที่�าอย�างิน��ได้�‘A’ + 5‘B’ * ‘x’100 / ‘a’
เป0นประโยชัน&มุากสั่ามุารถใชั�เป0น‘A’ + 5 มุ�ค�าเที่�าก�บ 70 ซ,�งิค#อรห�สั่ ASCII ของิตั�ว ‘F’ ซ,�งิ
เป0นตั�วอ�กษรที่��อย1�หล�งิ A 5 ตั�ว‘x’ – ‘a’ มุ�ค�าเที่�าก�บ 23 ซ,�งิหมุายความุว�า ‘x’ อย1�หล�งิ ‘a’
ไป 23 ตั�ว
ตั�วแปรประเภที่ stringเราสั่ามุารถประกาศตั�วแปรประเภที่ string ได้�ด้�วยค�าสั่��งิ
char *ชั#�อตั�วแปร;เชั�น char *name;
หล�งิจากน��นก"สั่ามุารถก�าหนด้ค�าให�มุ�นได้�โด้ยใชั�เคร#�องิหมุายเที่�าก�บ (=)เชั�น name = “Dennis Richie”
เวลาจะพ�มุพ&ค�า string ด้�วยค�าสั่��งิ printf ให�ใชั�ตั�วอ�กขระจ�ด้ร1ปแบบ %sเชั�น printf(“%s\n”, name);
โปรแกรมุ #14#include <stdio.h>
void main()
{
char *name;
name = "Dennis Ritchie";
printf("%s is the creator of the C language.\n",
name);
}
โปรแกรมุ #15ผลล�พธ์&
Dennis Ritchie is one of the creator of the C language.
โปรแกรมุ #15สั่ามุารถเข�ยนให�สั่� �นลงิเล"กน�อยได้�ด้�งิน��
#include <stdio.h>
void main()
{
char *name = "Dennis Ritchie";
printf("%s is the creators of the C language.\n",
name);
}
ตั�วแปรที่��เก"บค�าจ�านวนจร�งิมุ�รวมุที่��งิหมุด้ 3 ชัน�ด้
float ขนาด้ 32 บ�ตั double ขนาด้ 64 บ�ตัlong double ขนาด้ 64 บ�ตั
long double ก�บ double จะเหมุ#อนก�นในสั่ายตัาของิสั่�วนมุาก แตั�สั่�าหร�บคอมุไพเลอร&บางิตั�ว long double จะมุ�ขนาด้ 128 บ�ตั
อ�กขระจ�ด้ร1ปแบบที่��ใชั�แสั่ด้งิผลตั�วแปรร1ปแบบตั�างิๆ ได้�แตั�float ใชั� %fdouble และ long double ใชั� %lf
อ�กขระจ�ด้ร1ปแบบสั่�าหร�บค�าประเภที่จ�านวนจร�งิ%f ค#อการพ�มุพ&จ�านวนจร�งิธ์รรมุด้า%e ค#อการพ�มุพ&จ�านวนจร�งิในร1ปแบบ scientific
notationเชั�น 123.45 จะพ�มุพ&เป0น 1.234500e+02 หมุายความุ
ถ,งิ 1.2345 102
%E ค#อการพ�มุพ&แบบ scientific notation เหมุ#อนก�น แตั�ใชั�ตั�ว E พ�มุพ&ใหญ่�
โปรแกรมุ #16#include <stdio.h>
void main()
{
float score;
score = 300.545;
printf("Score are %f, %e, and %E\n",
score, score, score);
}
โปรแกรมุ #16ผลล�พธ์&ของิโปรแกรมุ
Score are 300.545013, 3.005450e+002, and 3.005450E+002
โปรแกรมุ #16ที่�าไมุมุ�นถ,งิพ�มุพ& 300.545013 ที่��งิๆ ที่��เราสั่��งิ
300.545?น��เป0นเพราะว�าจ�านวนจร�งิมุ�อย1�น�บไมุ�ถ�วนแตั�เราใชั�พ#�นที่��เพ�ยงิ 32 บ�ตั (ตั�วแปรประเภที่ float) เก"บค�า
น��นที่�าให�เราเก"บจ�านวนจร�งิได้�แค�บางิตั�ว300.545 เป0นหน,�งิในจ�านวนจร�งิที่��เก"บไมุ�ได้�เลยตั�องิใชั�ค�าที่��ใกล�มุ�นมุากที่��สั่�ด้ที่��เก"บได้� ค#อ 300.5450130.000013 ที่��เก�นมุาเร�ยกว�า round-off error
โปรแกรมุ #16ที่�าอย�างิไร round-off error จะหายไป?
มุ�นหายไปไมุ�ได้� น��เป0นข�อจ�าก�ด้ที่างิที่ฤษฎี�!แตั�เราสั่ามุารถที่�าให�มุ�นลด้ลงิได้�ด้�วยการใชั�ตั�วแปรที่��ให�
ความุละเอ�ยด้สั่1งิข,�นใชั� double แที่น float
อย�างิไรก"ด้�จะใชั�ก"ตั�องิค�ด้ด้�ๆใชั�แล�วหน�วยความุจ�าสั่�าหร�บเก"บข�อมุ1ลจะเพ��มุข,�นสั่องิเที่�า!
โปรแกรมุ #17#include <stdio.h>
void main()
{
double score;
score = 300.545;
printf("Score are %f, %e, and %E\n",
score, score, score);
}
โปรแกรมุ #17ผลล�พธ์&ของิโปรแกรมุ
Score are 300.545000, 3.005450e+002, and 3.005450E+002
การก�าหนด้จ�านวนตั�วเลขและจ�านวนตั�วเลขหล�งิที่ศน�ยมุเราสั่ามุารถก�าหนด้จ�านวนตั�วเลขและจ�านวนตั�วเลขหล�งิ
ที่ศน�ยมุได้�ด้�วยตั�วอ�กขระจ�ด้ร1ปแบบ%w.df
โด้ยที่�� w และ d เป0นจ�านวนเตั"มุที่��ไมุ�เป0นลบw แที่นจ�านวนตั�าแหน�งิที่��งิหมุด้ในการแสั่ด้งิผล รวมุ
จ�ด้ที่ศน�ยมุหน,�งิตั�าแหน�งิd แที่นจ�านวนตั�าแหน�งิหล�งิจ�ด้ที่ศน�ยมุ
ถ�าข�อมุ1ลมุ�น�อยกว�า w ตั�าแหน�งิ โปรแกรมุเตั�มุชั�องิว�างิหน�าข�อมุ1ลจนครบ w ตั�าแหน�งิ
ยกตั�วอย�างิเชั�น ถ�าเราพ�มุพ&ค�า 12.35 ด้�วยอ�กษรจ�ด้ข�อความุ %7.2f เราจะได้�ข�อความุ(ว�างิ
)(ว�างิ
)1 2 . 3 5
โปรแกรมุ #18#include <stdio.h>
void main()
{
double temp;
temp = 12.34;
printf("%7.2f, %10.3E, %10.3e\n", temp, temp, temp);
temp = 1.2365e-5;
printf("%7.2f, %10.3E, %10.3e\n", temp, temp, temp);
temp = 584.365E+17;
printf("%7.2f, %10.3E, %10.3e\n", temp, temp, temp);
}
โปรแกรมุ #18ผลล�พธ์&ของิโปรแกรมุ
12.34, 1.234E+001, 1.234e+001
0.00, 1.237E-005, 1.237e-005
58436500000000000000.00, 5.844E+019, 5.844e+019
โปรแกรมุ #18ผลล�พธ์&ของิโปรแกรมุ
__12.34, 1.234E+001, 1.234e+001
___0.00, 1.237E-005, 1.237e-005
58436500000000000000.00, 5.844E+019, 5.844e+019
+=, -=, *=, /=, %=สั่มุมุตั�ว�า เป0นเคร#�องิหมุายถ�าสั่��งิ
ตั�วแปร = น�พจน&;จะมุ�ความุหมุายเหมุ#อนก�บ
ตั�วแปร = ตั�วแปร (น�พจน&);
เชั�น x += 1; มุ�ความุหมุายเหมุ#อนก�บ x = x+1;
y -= x*5; มุ�ความุหมุายเหมุ#อนก�บ y = y – (x*5);
โปรแกรมุ #19#include <stdio.h>void main(){ int a = 0, b = 5; a += 4; printf("a is %d\n", a); a *= 3; printf("a is %d\n", a); a /= 4; printf("a is %d\n", a); a %= 5; printf("a is %d\n", a); a = 7; a /= a - b; printf("a is %d\n", a); b *= b + a; printf("b is %d\n", b);}
โปรแกรมุ #19ผลล�พธ์&ของิโปรแกรมุ
a is 4
a is 12
a is 3
a is 3
a is 3
b is 40
++, --ค�าสั่��งิ x+=1; สั่ามุารถย�อเป0น x++; หร#อ ++x; ก"ได้�ฃ
ค�าสั่��งิ x-=1; สั่ามุารถย�อเป0น x--; หร#อ --x; ก"ได้�
โปรแกรมุ #20#include <stdio.h>void main(){ int x = 8; printf("x is %d\n", x); x++; printf("x is %d\n", x); ++x; printf("x is %d\n", x); x--; printf("x is %d\n", x); --x; printf("x is %d\n", x);}
โปรแกรมุ #20ผลล�พธ์&ของิโปรแกรมุ
x is 8
x is 9
x is 10
x is 9
x is 8
ค�าสั่��งิ scanfใชั�ร�บข�อมุ1ลจากที่างิ standard input
ที่�าหน�าที่��กล�บก�นก�บ printfอย1�ใน stdio.h เหมุ#อนก�บ printfร1ปแบบการใชั�งิาน
scanf(ข�อความุ, &ชั#�อตั�วแปร 1, &ชั#�อตั�วแปร 2, …, &ชั#�อตั�วแปร n);
ข�อความุที่��ให�เป0นอาร&ก�วเมุนตั&ของิ scanf ไปจะตั�องิมุ�อ�กขระจ�ด้ร1ปแบบเที่�าก�บจ�านวนตั�วแปรที่��ให�เป0นอาร&ก�วเมุนตั&ตั�อที่�าย
scanf จะอ�านข�อความุเข�ามุาหน,�งิข�อความุ แล�วพยายามุเอาข�อความุสั่�วนที่��ตัรงิก�บอ�กขระจ�ด้ร1ปแบบไปใสั่�ในตั�วแปรที่��ตัรงิก�บอ�กขระจ�ด้ร1ปแบบน��น
ค�าสั่��งิ scanfยกตั�วอย�างิเชั�น ถ�าเราสั่��งิscanf(“%d %d”, &x, &y);
แล�วผ1�ใชั�ป<อนข�อความุ10 20
จะได้�ว�า x จะมุ�ค�าเที่�าก�บ 10 และ y มุ�ค�าเที่�าก�บ 20
โปรแกรมุ #21#include <stdio.h>void main(){ int val; printf("Enter a decimal integer: "); scanf("%d", &val); printf("The value is %o in octal, and %x in \
hexadecimal.\n", val, val); printf("Enter an octal integer: "); scanf("%o", &val); printf("The value is %d in decimal.\n", val); printf("Enter a hexadecimal integer: "); scanf("%x", &val); printf("The value is %d in decimal.\n", val);}
โปรแกรมุ #21ผลล�พธ์&ของิโปรแกรมุ
Enter a decimal integer: 78
The value is 116 in octal, and 4e in hexadecimal.
Enter an octal integer: 116
The value is 78 in decimal.
Enter a hexadecimal integer: 4e
The value is 58446 in decimal.
(หมายเหต� ตั�วอ�กษรตั�วพ�มุพ&หนาค#อข�อความุที่��ผ1�ใชั�ป<อนเข�าที่างิค�ย&บอร&ด้)
แบบฝ:กห�ด้ #4เข�ยนโปรแกรมุร�บเลขจ�านวนเตั"มุหน,�งิตั�ว สั่มุมุตั�ว�าตั�วแปร
น��นค#อ x เสั่ร"จแล�วพ�มุพ&ค�า x, x2, และ x3
แบบฝ:กห�ด้ #4#include <stdio.h>
void main()
{
int x;
scanf("%d\n", &x);
printf("%d %d %d\n", x, x*x, x*x*x);
}
แบบฝ:กห�ด้ #5จงิเข�ยนโปรแกรมุร�บร�ศมุ�ของิวงิกลมุ แล�วพ�มุพ&พ#�นที่��และ
เสั่�นรอบวงิของิวงิกลมุน��นโด้ยประมุาณ ออกที่างิหน�าจอ
แบบฝ:กห�ด้ #5#include <stdio.h>
void main()
{
float r;
float pi = 3.14159265;
scanf("%f\n", &r);
float area = pi * r * r;
float circumference = 2 * pi * r;
printf("%f %f\n", area, circumference);
}