Answers:
因为C标准是这样说的,所以它只有一票。
结果:
sizeof (int)
,而不是对象表达式。int a; printf("%d\n", sizeof a);
很好。人们经常看到它们,首先是因为它们需要作为类型转换表达式的一部分,其次是因为sizeof具有很高的优先级,因此sizeof a + b
与并不相同sizeof (a+b)
。但是它们不是sizeof调用的一部分,而是操作数的一部分。sizeof a++
不会修改a)。在所有这些点上,功能都会有所不同。函数和一元运算符之间可能还存在其他差异,但是我认为这足以说明为什么sizeof不能成为函数,即使有理由希望这样做也是如此。
sizeof
如果表达式中包含VLA ,则该标准甚至允许产生副作用。
sizeof
:-在C11标准中,它不被视为“ cast”,而是被括在括号中的类型名称。最终结果大致相同。(为进行比较,强制转换表达式为。)而且我讨厌注释Markdown与问答Markdown的工作方式不同!sizeof unary-expression
sizeof ( type-name )
( type-name ) cast-expression
因为C标准是这样说的,所以它只有一票。
该标准可能是正确的,因为sizeof
采用类型和
通常,如果函数的域或共域(或两者)包含比实数复杂得多的元素,则该函数称为运算符。相反,如果函数的域和共域都不包含比实数更复杂的元素,则该函数可能会简单地称为函数。余弦等三角函数就是后一种情况的示例。
此外,当函数被使用得比通用F(x,y,z,...)形式频繁地使用时,它们的符号表示法发展得更快或更容易时,所得的特殊形式也称为运算符。示例包括中缀运算符,例如加号“ +”和除法“ /”,以及后缀运算符,例如阶乘“!”。这种用法与所涉及实体的复杂性无关。
因为它不是功能。您可以这样使用它:
int a;
printf("%d\n", sizeof a);
函数确实具有入口点,代码等。函数要在运行时(或内联)运行,sizeof必须在编译时确定。
sizeof运算符是编译时实体,而不是运行时,不需要像函数一样的括号。当编译代码时,它将在编译时用该变量的大小替换该值,但是在函数执行后的函数中,我们将知道返回值。
Sizeof(),我想显然它既是函数又是运算符。为什么?因为函数在输入阶段包含用于输入的括号。但是主要也是一个运算符,因为运算符是动作字符,因此sizeof是作用在括号中的操作数上的动作语句。