各位版友好,
因为当年学C时基础没打好,买了工具书C Primer Plus重新温习,
翻到Chapter 4 格式化输出输入的时候,
书本上举了一个印出float资料的范例,
程式码如下:
#include <stdio.h>
int main(void)
{
float n1=3.0;
double n2=3.0;
long n3=2000000000;
long n4=1234567890;
printf("%.1e %.1e %.1e %.1e\n",n1,n2,n3,n4);
printf("%ld %ld\n",n3,n4);
printf("%ld %1d %1d %1d\n",n1,n2,n3,n4);
return 0;
}
输出如下:
3.0e+00 3.0e+00 3.1e+46 1.7e+266
2000000000 1234567890
0 1074266112 0 1074266112
书中使用图片协助解释为何最后一行输出会是0 1074266112 0 1074266112,
图片如下...
https://i.imgur.com/loOdtmG.jpg
书中解释如下...
https://i.imgur.com/FF9vPov.jpg
以下有两个问题想请教,
1.解释中提到,n1以8个bytes放置到stack中,从float转变成double型态,
请问为什么会有这一步?
2.n3跟n4皆为long型态,大小为4个bytes,为何n3给了6个bytes的大小,
而n4又给4个bytes?