我知道这看起来很熟悉,但它是微软招聘实习生测试中的一个问题。在我看来,这y=++y
不符合标准,但我认为确定会更好(不确定我是否比那些在 MS 编写这些测试的人更好)。所以我在征求你的意见。您是否认为这样的表达式符合标准并且不会导致未定义的行为?
#include <stdio.h>
int main(){
int a = 10;
int b = 10;
a = ++a; //What ???
b = b++; //What ???
printf("%d %d\n",a,b);
return 0;
}
gcc
用于编译时抱怨它-Wsequence-point
。(没有明确说明它是 C 还是 C++ 特定问题。)
但只提供了四个答案:
a) 10 10
b) 11 10
c) 10 11
d) 11 11
虽然一个不限于只选择一个答案(所以也许我应该选择所有四个?)
好吧,在我看来,自增和赋值之间没有序列点。所以这违反了规范。不是吗?