ชนิดของข้อมูล | Format specifier |
---|---|
Char | %d ( ถ้าต้องการแสดงตัวอักษรใช้ %c ) |
signed short int | %d |
unsigned short int | %u |
signed int | %d |
unsigned int | %u |
signed long int | %ld |
unsigned long int | %lu |
signed long long int | %lld |
unsigned long long int | %llu |
float | %f |
double | %f |
ทำไมไม่ใช้ long int แทน int ทั้งหมด เพราะ long int เก็บข้อมูลได้มากกว่า int ?
เพราะว่า long int นั้นใช้พื้นที่เก็บข้อมูล (ในแรม) มากกว่า int . ถ้าโปรแกรมมีขนาดใหญ่ขึ้น การใช้ long int โดยไม่จำเป็นก็จะทำให้โปรแกรมกินหน่วยความจำของระบบเกินกว่าที่จำเป็นจริงๆ อาจทำให้ระบบโดยรวมช้าลง และไม่เกิดประโยชน์อะไรเลย. แต่บางกรณี การใช้แรมตามที่ต้องการ แม้จะเป็นจำนวนมาก ถ้าใช้อย่างถูกต้อง ก็จะทำให้โปรแกรมทำงานได้เร็วกว่าโปรแกรมที่ออกแบบมาเพื่อประหยัดแรม ตัวอย่างเช่น โปรแกรมทำการเรียงลำดับตัวเลขจากมากไปหาน้อย ( Merge sort ) , โปรแกรมการค้นหาข้อมูล ( searching )
จะเกิดอะไรขึ้นถ้าตั้งค่าข้อมูลเกินกว่าขีดจำกัด
คอมไพเลอร์อาจไม่มองว่าเป็น error แต่อาจจะแจ้งเตือน. ค่าที่มากเกินกว่าหรือน้อยกว่าขีดจำกัด จะทำการวกกลับมาตั้งค่าใหม่ ดังนั้นค่าที่ได้จริงๆจึงไม่ถูกต้อง ( คล้ายๆการเอาไม้บรรทัดที่สั้นกว่าเชือกไปวัดเชือก วัดไปหลายๆรอบ สิ้นปลายเชือกตรงไหน ก็คือค่านั้นในไม้บรรทัด )
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <limits.h> | |
int main(void) | |
{ | |
printf(" Number of bits in a `char'. %d\n",CHAR_BIT ); | |
printf(" Maximum length of a multibyte character. %d\n",MB_LEN_MAX ); | |
printf(" Minimum and maximum values a `signed char' can hold. %d\n",SCHAR_MIN); | |
printf(" Maximum value an `unsigned char' can hold. (Minimum is 0). %u\n",UCHAR_MAX); | |
printf(" Minimum and maximum values a `char' can hold. %d\n",CHAR_MIN); | |
printf(" Minimum and maximum values a `char' can hold. %d\n",CHAR_MAX); | |
printf(" Minimum and maximum values a `signed short int' can hold. %d\n",SHRT_MIN); | |
printf(" Minimum and maximum values a `signed short int' can hold. %d\n",SHRT_MAX); | |
printf(" Maximum value an `unsigned short int' can hold. %u\n",USHRT_MAX); | |
printf(" Minimum and maximum values a `signed int' can hold. %d\n",INT_MIN); | |
printf(" Minimum and maximum values a `signed int' can hold. %d\n",INT_MAX); | |
printf(" Maximum value an `unsigned int' can hold. (Minimum is 0). %u\n",UINT_MAX); | |
printf(" Minimum and maximum values a `signed long int' can hold. %ld\n",LONG_MIN); | |
printf(" Minimum and maximum values a `signed long int' can hold. %ld\n",LONG_MAX); | |
printf(" Maximum value an `unsigned long int' can hold. (Minimum is 0). %lu\n",ULONG_MAX); | |
printf(" Minimum and maximum values a `signed long long int' can hold. %lld\n",LLONG_MIN); | |
printf(" Minimum and maximum values a `signed long long int' can hold. %lld\n",LLONG_MAX); | |
printf(" Maximum value an `unsigned long long int' can hold. (Minimum is 0). %llu\n",ULLONG_MAX); | |
return 0; | |
} |