c中sizeof函数内的赋值[重复]

2024-01-17

foo(a = b+c);
//new value of a(after the call) = b+c
//but
sizeof(a = b+c);
//new value of a = old value of a

在后一种情况下,为什么赋值语句的结果没有反映在函数的堆栈中(包含上述代码)?


sizeof是一个运算符而不是一个函数。的操作数sizeof除非它是可变长度数组,否则不进行求值。

C11:6.5.3.4 p(2):

The sizeof运算符产生其操作数的大小(以字节为单位),该操作数可以是表达式或带括号的类型名称。大小由操作数的类型确定。结果是一个整数。如果操作数的类型是变长数组类型,则对操作数求值;否则,不计算操作数,结果为整数常量.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c中sizeof函数内的赋值[重复] 的相关文章

随机推荐