Снова привет всем экспертам, и я снова наталкиваюсь на несколько вопросов.
История:
Я читаю книгу, в которой упоминается точка последовательности, котораяis ;
- это точка, в которой весь побочный эффект, прежде чем он должен быть оценен, прежде чем перейти к следующему утверждению. Чтобы очистить контекст моего вопроса, я напишу простой код.
Код:
while (guess++ < 10)
{
printf("%d \n" , guests);
Мое мышление и вопрос:
1.) Из приведенного выше кода, условие теста оператора while
guess++ < 10
- это полное выражение. Так что, на мой взгляд, это не утверждение, потому что оно не заканчивается на ;
.
2.) Поскольку используется оператор приращения постфикса, следовательно, guess
значение оценивается до его увеличения.
3.) В книге упоминается, что операция приращения выполняется сразу после того, как переменная guess
используется для реляционной операции, тогда только функция printf()
будет нестивыполнил свой долг.
4.)Суть в том, что, поскольку условие проверки не заканчивается на ;
, следовательно, это не утверждение.Но почему операция приращения, реализованная до вызова функции printf()
, а не только после функции print()
, только увеличивается? ??
5.) Может быть, это побочный вопрос, в книге упоминается, что while
- это структурированное утверждение, но почему я не вижу заключительного ;
, добавляемого к нему while(testcondition);
.
6.) Это может звучать глупо, но иногда, когда я читаю некоторыеИсходный код, написанный другими, я буду видеть, как некоторые из них помещают открытые скобки {
цикла while в ту же строку с while()
, что приводит к тому, что это похоже на while(testcondition){
.Это соглашение или есть какая-то особая причина для этого ??
Спасибо, что потратили время на чтение моих проблем, ваша помощь очень ценится.