Нет, приоритет оператора не изменился между двумя фрагментами кода.Следующее:
while(int c=getchar() != 'q')
эквивалентно:
while(int c = (getchar() != 'q'))
Здесь вызывается getchar()
, его возвращаемое значение сравнивается с 'q'
, а является результатомсравнение сохраняется в переменной int
c
.
Другими словами, c
не содержит только что прочитанный символ;он содержит логический индикатор, указывающий, был ли самый последний символ 'q'
.
Поскольку c
никогда не просматривается, код работает.Однако, это, вероятно, не то, что предполагалось.