Я знаю, что это выглядит знакомо, но мне это кажется проблемой в тесте Microsoft, чтобы нанять стажеров. Мне кажется, что y=++y
не соответствует стандарту, но я думаю, что было бы лучше быть уверенным (не уверен, что я лучше тех, кто пишет эти тесты в MS). Поэтому я прошу вашего совета. Считаете ли вы, что подобные выражения соответствуют стандарту и не приводят к undefined поведению?
#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 или С++.)
Но предоставлено только четыре ответа:
a) 10 10
b) 11 10
c) 10 11
d) 11 11
Хотя один из них не ограничивается выбором только одного ответа (возможно, мне нужно выбрать все четыре?)
Хорошо, на мой взгляд, между самоинкрементами и присваиванием нет точки последовательности. Таким образом, это нарушает спецификацию. Не так ли?