ãã1.æ´åæ°æ®ç±»å
Cå®ä¹äº5ç§æ´åæ°æ®ç±»åã
æ´åæ°æ®ç±»å表
ããåºå· ç±»åå称 说æ åèæ° åå¼èå´
ãã1 signed char æ符å·çååèæ´æ°ç±»å 1 -128~+127
ãã2 short int çæ´å 2 -32768~+32767
ãã3 int æ´å 4 -2147438648~+2147438647
ãã4 long int é¿æ´å 4 -2147438648~+2147438647
ãã5 long long int é¿é¿æ´å 8 -9223372036854775808~+-9223372036854775807
ä¾ è¾åºåç§æ´åç±»åçåèæ°
#include
int main(void) {
printf("sizeof(signed char) = %d/n", sizeof(signed char));
printf("sizeof(short int) = %d/n", sizeof(short int)); /* sizeofçç»æé½æ¯intå */
printf("sizeof(int) = %d/n", sizeof(int));
printf("sizeof(long int) = %d/n", sizeof(long int));
printf("sizeof(long long int) = %d/n", sizeof(long long int));
return 0;
}
ç¼è¯åè¿è¡ç»æ
[root@localhost ccc]# gcc c15.c
[root@localhost ccc]# ./a.out
sizeof(signed char) = 1
sizeof(short int) = 2
sizeof(int) = 4
sizeof(long int) = 4
sizeof(long long int) = 8
ç¨åºè¯´æï¼sizeofæ¯åèæä½ç¬¦ï¼ä½¿ç¨æ¹å¼ï¼sizeofï¼æ°æ®ç±»åï¼ãsizeofçä½ç¨æ¯å¾å°æ°æ®ç±»åæå çåèæ°ãæ们è¿è¡ç¨åºä½¿ç¨çç¯å¢æ¯Redhat 5 Linuxï¼ç¼è¯å¨æ¯GCCã
2.æ 符å·æ´æ°ç±»å
对åºæ符å·ç±»åï¼è¿ææ 符å·æ´æ°ç±»åã
æ 符å·æ´æ°ç±»å表
ããåºå· ç±»åå称 åèæ° åå¼èå´
ãã1 unsigned char 1 0~255
ãã2 unsign short int 2 0~65535
ãã3 unsigned int 4 0~4294967295
ãã4 unsigned long int 4 0~4294967295
ãã5 unsign long long int 8 0~18446744073709551615
ä¾ è¾åºåç§æ 符å·æ´æ°ç±»åçåèæ°
#include
int main(void) {
printf("sizeof(unsigned char) = %d/n", sizeof(unsigned char));
printf("sizeof(unsigned short int) = %d/n", sizeof(unsigned short int)); /* sizeofçç»æé½æ¯intå */
printf("sizeof(unsigned int) = %d/n", sizeof(unsigned int));
printf("sizeof(unsigned long int) = %d/n", sizeof(unsigned long int));
printf("sizeof(unsigned long long int) = %d/n", sizeof(unsigned long long int));
return 0;
}
ç¼è¯åè¿è¡ç»æ
[root@localhost ccc]# gcc c16.c
[root@localhost ccc]# ./a.out
sizeof(unsigned char) = 1
sizeof(unsigned short int) = 2
sizeof(unsigned int) = 4
sizeof(unsigned long int) = 4
sizeof(unsigned long long int) = 8
3.æ´å常é
æ´å常éæ¯æç¨ä»¥è¡¨ç¤ºæ´åæ°å¼ç常éï¼å为çæ´åï¼short intï¼ãæ´åï¼intï¼ãé¿æ´åï¼long int ï¼åé¿é¿æ´åï¼long long intï¼åç§ãCé»è®¤æ´åï¼intï¼ã åç§ç±»åæ´å常éè¿å¶è¡¨ç¤ºè¡¨ï¼åç¼ä¸åºå大å°åï¼
ããåºå· æ°æ®ç±»å å
«è¿å¶ åè¿å¶ åå
è¿å¶
ãã1 æ´å 0112 74 0x4a
ãã2 é¿æ´åï¼lï¼ 0112l 74l 0x4al
ãã3 é¿é¿æ´åï¼llï¼ 0112ll 74ll 0x4all
ãã4 æ 符å·æ´åï¼uï¼ 0112u 74u 0x4au
ãã5 æ 符å·é¿æ´åï¼ulï¼ 0112ul 74ul 0x4aul
ãã6 æ 符å·é¿é¿æ´åï¼ullï¼ 0112ull 74ull 0x4aull
4.å符æ°æ®ç±»å
Cè¯è¨ä¸å符åæ°æ®åªæä¸ç§ï¼å³charåæ°æ®ãä¸è¬ä¹æcharç´æ¥ç§°ä¸ºå符åãå符åå ç¨å
å空é´æå°ï¼ä¸è¬å ç¨ä¸ä¸ªåèï¼åå¨å¨charç±»ååéçæ´æ°å¯ä»¥è¡¨ç¤ºä¸ºæ符å·ææ 符å·çå¼ï¼è¿åå³äºç¼è¯å¨ã
ä¾ å符åæ°æ®ç±»åçåèé¿åº¦
#include
int main(void) {
printf("sizeof(char) = %d/n", sizeof(char));
printf("sizeof(signed char) = %d/n", sizeof(signed char));
printf("sizeof(unsigned char) = %d/n", sizeof(unsigned char));
return 0;
}
ç¼è¯åè¿è¡ç»æ
[root@localhost ccc]# gcc c17.c
[root@localhost ccc]# ./a.out
sizeof(char) = 1
sizeof(signed char) = 1
sizeof(unsigned char) = 1
5.å符åé
å符åéæ¯ç¨äºåå¨å符åæ°å¼çåéãå符ååéä¹å为两ç§ï¼æ符å·åæ 符å·åã
è¯æ³ç»æï¼
[signed] char ch1;
[unsigned] char ch2;
ä¾
#include
int main(void) {
char ch1 = '/n';
unsigned char ch2 = '/t';
char ch3 = 48;
printf("ch1 = [%c], [%d]/n", ch1, ch1);
printf("ch2 = [%c], [%d]/n", ch2, ch2);
printf("ch3 = [%c], [%d]/n", ch3, ch3);
return 0;
}
ç¼è¯åè¿è¡ç»æ
[root@localhost ccc]# gcc c18.c
[root@localhost ccc]# ./a.out
ch1 = [
], [10]
ch2 = [ ], [9]
ch3 = [0], [48]
ç¨åºè¯´æï¼è½¬ä¹ç¬¦'/n'æ¯æ¢è¡ç¬¦ï¼ç¬¬ä¸ä¸ªprintfå½æ°ä¸%cå¤ä¼æ¿æ¢ä¸º'/n'ï¼è¾åºå°ç»ç«¯ä¸åä¼æ¿æ¢ä¸ºæ¢è¡ï¼æ们å¯ä»¥çå°è¾åºç第ä¸ä¸ªæ¹æ¬å·ä¸é´ åçæ¢è¡ã%dæ¯c1çASCIIç å¼ä»£æ¿ã转ä¹ç¬¦'/t'æ¯æ°´å¹³å¶è¡¨ç¬¦ï¼ç¬¬äºä¸ªprintféç%cä¼æ¿ä»£ä¸º'/t'ï¼è¾åºå°ç»ç«¯ä¸ãæ°å¼48对åºç ASCIIç æ¯0ï¼æ以对åºè¾åºå°ç»ç«¯ä¸æ¯ä¸ä¸ª0ã
6.æµ®ç¹åæ°æ®ç±»å
Cè¯è¨å®ä¹äºä¸ç§æµ®ç¹æ°æ®ç±»åï¼
•floatï¼å精度
•doubleï¼å精度
•long doubleï¼é¿å精度
Cæ åä¸å¯¹ä¸åç±»åçæµ®ç¹æ°æä¸åçè§å®ï¼ç¼è¯å¨ä¸åæ硬件æ¡ä»¶ä¸åï¼åèé¿åº¦ä¹ä¸ç¸åã
ä¾ æµè¯ä¸ç§æµ®ç¹ååèé¿åº¦
#include
int main(void) {
printf("sizeof(float) = %d/n", sizeof(float));
printf("sizeof(double) = %d/n", sizeof(double));
printf("sizeof(long double) = %d/n", sizeof(long double));
return 0;
}
ç¼è¯åè¿è¡ç»æ
[root@localhost ccc]# gcc c19.c
[root@localhost ccc]# ./a.out
sizeof(float) = 4
sizeof(double) = 8
sizeof(long double) = 12
æµ®ç¹åçåèé¿åº¦ã精度ãæ°é级èå´åè¾åºè¾å
¥æ ¼å¼è¡¨
ããåºå· æ°æ®ç±»å åèé¿åº¦ 精度 æ°é级èå´ printfåscanfæ ¼å¼
ãã1 float(f) 4 7 -38~38 %f
ãã2 double 8 约16 -308~308 %f
ãã3 long double(1) 12 约19 -4932~4932 %llf
7.æµ®ç¹å精度
æµ®ç¹å精度ä»ä½å°é«æå为floatãdoubleålong long doubleã
ä¾ æ£æ¥æµ®ç¹å精度
#include
int main(void) {
float f = 0.9876543210123456789012f; /* å¯ä»¥ä¸ä½¿ç¨fåç¼ï¼ä½å¯è½ä¼åºç°warning */
double d = 0.9876543210123456789012;
long double ld = 0.9876543210123456789012l; /* å¿
须使ç¨åç¼læL */
printf("f/t= %.25f/n", f);
printf("d/t= %.25lf/n", d);
printf("ld/t= %.25llf/n", ld);
return 0;
}
ç¼è¯åè¿è¡ç»æ
[root@localhost ccc]# gcc c20.c
[root@localhost ccc]# ./a.out
f = 0.9876543283462524414062500
d = 0.9876543210123456262294894
ld = 0.9876543210123456789217150
8.æµ®ç¹åçåå¨æ¹å¼
æµ®ç¹åæ°å¼ä»¥ç§å¦è®¡æ°æ³ç表示形å¼åå¨å¨å
åä¸ãæµ®ç¹åçå
åå½¢å¼å
å«ä¸ä¸ªé¨åï¼
1ï¼ç¬¦å·ä½
符å·ä½æµ®ç¹åç符å·ä½åªæä¸ä½ï¼ä¸ºæé«ä½ã该ä½ä¸º1ï¼è¡¨ç¤ºè´æ°ï¼è¯¥ä½ä¸º0ï¼ä¸ºéè´æ°ã
2ï¼ææ°ä½
æµ®ç¹åçææ°ä½ä»¥è¡¥ç å½¢å¼åå¨ï¼æ¯ç§å¦è®¡æ°æ³çææ°é¨åã
3ï¼åºæ°ä½
åºæ°ä½æ¯æµ®ç¹åçæåä¸ä½ï¼è¿ä¸ªä½å³å®æ°å¼ç精度ã
æµ®ç¹åå¨åå段表
ããåºå· æ°æ®ç±»å 符å·ä½ ææ°ä½ åºæ°ä½ åå·®å¼
ãã1 float 1 8 23 127
ãã2 double 1 11 52 1023
ãã3 long double 1 15 64 16383
ä¾ æ£æµfloatãdoubleålong doubleçåå¨ç¶æ
#include
int main(void) {
float fone = 2.0;
float ftwo = 2.5;
double done = 2.0;
double dtwo = 2.5;
long double ldone = 2.0;
long double ldtwo = 2.5;
/* è¾åºfloatåæ°æ®å¨å
åä¸çåå¨å
容 */
printf("float (2.0) = %08x/n", *(int *)(&fone));
printf("float (2.5) = %08x/n", *(int *)(&ftwo));
/* è¾åºdoubleåæ°æ®å¨å
åä¸çåå¨å
容 */
printf("double(2.0) = %016llx/n", *(long long *)(&done));
printf("double(2.5) = %016llx/n", *(long long *)(&dtwo));
/* è¾åºlong doubleåæ°æ®å¨å
åä¸çåå¨å
容 */
printf("londou(2.0) = %08x %08x %08x/n",
*(((int *)(&ldone)) + 2 ),
*(((int *)(&ldone)) + 1 ),
*(((int *)(&ldone)) ));
printf("londou(2.5) = %08x %08x %08x/n",
*(((int *)(&ldtwo)) + 2 ),
*(((int *)(&ldtwo)) + 1 ),
*(((int *)(&ldtwo)) ));
return 0;
}
ç¼è¯åè¿è¡ç»æ
[root@localhost ccc]# gcc c21.c
[root@localhost ccc]# ./a.out
float (2.0) = 40000000
float (2.5) = 40200000
double(2.0) = 4000000000000000
double(2.5) = 4004000000000000
londou(2.0) = 00004000 80000000 00000000
londou(2.5) = 00004000 a0000000 00000000
ãã
温馨提示:答案为网友推荐,仅供参考