提问人:OODAX 提问时间:5/12/2023 最后编辑:LundinOODAX 更新时间:5/12/2023 访问量:137
C 语言中的赋值运算符
Assignment operator in C
问:
volatile int lhs = 1;
int rhs = 2;
int x = 3;
x = lhs = rhs;
同化运算符是否返回 (typeof lhs)rhs ?或者它是否返回 new,只是读取 lhs 的值? 这对我来说很重要,因为 lhs 是易变的,它可以在同化之间变化。
我在 cppreference 找不到 anwser。
答:
8赞
Eric Postpischil
5/12/2023
#1
C标准没有规定是否阅读;它允许任何一种行为。lhs
C 2018 6.5.16 指定赋值运算符。第 3 段说:
...赋值表达式在赋值后具有左操作数的值,115) 但不是左值...
脚注 115 说:
允许实现读取对象以确定值,但不是必需的,即使对象具有可失性限定类型也是如此。
因此,允许实现执行以下任一操作:
- 读取 的存储值(大概是在更新它的副作用完成后)以确定 的值,或者
lhs
lhs = rhs;
- 直接使用转换为 的类型生成的值。
rhs
lhs
评论
0赞
OODAX
5/12/2023
这就是我想听到的。谢谢
评论
lhs
x
volatile