当我问他什么时,这个问题的作者对我很开心
sizeof * q......他告诉我这是一个非常基本的C问题,我应该检查一下.但是当我环顾四周并且之前没有见过某人问过时,我现在就自己做了:
sizeof在没有括号和/或类型的情况下使用C时会做什么?
Sha*_*our 21
因此,如果我们sizeof在C99标准草案标准部分的6.5.3 一元操作符第1段中查看语法,则如下:
sizeof unary-expression
sizeof ( type-name )
Run Code Online (Sandbox Code Playgroud)
有一个区别你不能使用没有括号的类型名称和section 6.5.3.4 sizeof运算符段2说(强调我的):
sizeof运算符产生其操作数的大小(以字节为单位),可以是表达式或类型的带括号的名称.[...]
为了完整起见,你可能想知道如果我们sizeof有括号并且答案是肯定的,我们是否可以使用表达式,因为一元表达式本身可以包含括号.最简单的方法是查看标准草案中的A.2.1 表达式部分并完成语法,如下所示:
unary-expression -> postfix-expression -> primary-expression -> ( expression )
Run Code Online (Sandbox Code Playgroud)
xan*_*tos 19
sizeof是一个运算符,而不是一个函数,所以你不需要()if操作数是一个表达式(但你通常使用它们).sizeof * q == sizeof(*q).请注意,如果操作数是一个类型,则需要使用(),所以sizeof(int)(参见例如http://en.wikibooks.org/wiki/C_Programming/Reference_Tables)
sizeof sizeof operator for expressions sizeof 123
sizeof() sizeof operator for types sizeof (int)
Run Code Online (Sandbox Code Playgroud)
现在连维基都充满了关于C的信息...世界正在快速变化:-)
sizeof运算符用于确定指定数据类型在内存中占用的空间量.要使用sizeof,关键字"sizeof"后跟类型名称或表达式(可能只是变量名称).如果使用类型名称,则必须始终将其括在括号中,而可以使用括号或不使用括号指定表达式.
sizeof是一个运算符,特别是像一元&或一样的一元运算符++.它采用一元表达式或由parens包围的类型名称作为其操作数.
语法是
sizeof unary-expression sizeof ( type-name )
所以,给出一个类似的声明
int *q;
Run Code Online (Sandbox Code Playgroud)
表达式sizeof *q和sizeof (int)等价,原样sizeof q和sizeof (int *).
| 归档时间: |
|
| 查看次数: |
1387 次 |
| 最近记录: |