9 ขนาดข้อมูลตัวเลข


ชนิดของข้อมูล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 แต่อาจจะแจ้งเตือน. ค่าที่มากเกินกว่าหรือน้อยกว่าขีดจำกัด จะทำการวกกลับมาตั้งค่าใหม่ ดังนั้นค่าที่ได้จริงๆจึงไม่ถูกต้อง ( คล้ายๆการเอาไม้บรรทัดที่สั้นกว่าเชือกไปวัดเชือก วัดไปหลายๆรอบ สิ้นปลายเชือกตรงไหน ก็คือค่านั้นในไม้บรรทัด )


#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;
}