作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
#include <stdio.h>
int main(){
printf("%d\t",sizeof(6.5));
printf("%d\t",sizeof(90000));
printf("%d\t",sizeof('a'));
return 0;
}
当我编译代码时,输出将是:“842”。有人可以解释一下为什么我会得到这个输出吗?
最佳答案
首先是代码中的语法错误
printf("%d\t";sizeof('a'));
将其更改为
printf("%zu\t",sizeof('a')); //note the change in format specifier also
^
|
see here
然后,假设您的平台是 32 位
sizeof(6.5)
== sizeof(double)
== 8sizeof(90000)
== sizeof(int)
== 4sizeof('a')
== sizeof(int)
== 4澄清一下,a
表示 值 97,默认为 int
。因此,sizeof('a')
的值应为 4,而不是 2 或 1。
编辑:
要添加,您将得到 8 4 2
的输出,如果采用 16 位架构
sizeof(6.5)
== sizeof(double)
== 8sizeof(90000)
== sizeof(long)
== 4sizeof('a')
== sizeof(int)
== 2关于c - 我的代码的输出如何是842?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29515695/
我是一名优秀的程序员,十分优秀!