我是c编程的新手,我正在努力理解这个sizeof功能.
请帮我理解这个程序是如何工作的:
#include<stdio.h>
main( )
{
printf ( "\n%d %d %d", sizeof ( '3'), sizeof ( "3" ), sizeof ( 3 ) ) ;
}
Run Code Online (Sandbox Code Playgroud)
我得到输出为4 2 4.
但是,我无法理解我得到此输出的原因.请解释一下.
sizeof ( '3'),它的大小,字符常量这是int使你得到的值作为4你的机器上.
sizeof ( "3" ),它是字符串的大小即2.
字符串"3"由2个字符('3'+'\0')=组成"3".我们知道的sizeof(char)是1.
sizeof ( 3 ),它的大小int是4你的机器上.
小智 9
首先,几个笔记:
-Wall.这应该会给你一个关于你的格式字符串的警告.%zu,而不是%d作为解释如何打印为size_t变量便携?.C标准表示结果的类型sizeof是size_t(§6.5.3.4/ 5).如果您的转换说明符与您的参数不匹配,则它是未定义的行为.在你的问题上.
int,所以sizeof('3')是
sizeof(int)(这似乎是4你的机器上.)应用于数组时,sizeof返回数组的大小(以字节为单位).例如,sizeof(int[10])在4的机器上返回40.
sizeof(int)因为sizeof(char)它是1,它将等于字符串文字中的字符数.正如Jonathan Leffler所解释的那样:
sizeof("f")必须返回2,一个用于'f',一个用于终止'\ 0'.
[...]
字符串文字的类型为'char的大小为N的数组',其中N包含终止null.
请记住,数组不衰减1 通过为sizeof时的指针.
sizeof(3)是sizeof(int).| 归档时间: |
|
| 查看次数: |
3723 次 |
| 最近记录: |