#include <stdio.h>
int main(){
printf("%dt",sizeof(6.5));
printf("%dt",sizeof(90000));
printf("%dt",sizeof('a'));
return 0;
}
当我编译代码时,输出将是:"842"。有人可以解释为什么我得到这个输出吗?
首先是代码中的语法错误
printf("%dt";sizeof('a'));
将其更改为
printf("%zut",sizeof('a')); //note the change in format specifier also
^
|
see here
然后,假设您的平台是 32 位的
-
sizeof(6.5)
==sizeof(double)
== 8 -
sizeof(90000)
==sizeof(int)
== 4 -
sizeof('a')
==sizeof(int)
== 4
澄清一下,a
表示默认值为 97 的值 int
. 因此,sizeof('a')
应该给出值 4,而不是 2 或 1。
编辑:
另外,您将获得 8 4 2
的输出,如果,在 16 位架构中
-
sizeof(6.5)
==sizeof(double)
== 8 -
sizeof(90000)
==sizeof(long)
== 4 -
sizeof('a')
==sizeof(int)
== 2
如果您使用的是 32 位编译器
printf("%dt",sizeof(6.5));
6.5
是双倍的,所以sizeof(double)
给8
.
printf("%dt",sizeof(90000));
90000
是一个整数(或长整型(,所以sizeof(int)
给出4
。
printf("%dt";sizeof('a'));
^
you left a semicolon here, change it to a comma
'a'
转换为 int,因此sizeof(int)
给出4
.
所以实际输出是
8 4 4
IDEone链接
但是,如果你使用的是 16 位编译器,你会得到
sizeof(6.5)
= sizeof(double)
= 8
sizeof(90000)
= sizeof(long)
= 4
sizeof('a')
= sizeof(int)
= 2
所以这可以解释你的输出。