Может кто-нибудь объяснить мне это, пока l oop что значит? - PullRequest
0 голосов
/ 17 февраля 2020
while (a = b) 
   ;

Я знаю, что это, вероятно, не будет ничего сложного, но я не понимаю, чем это станет

Ответы [ 3 ]

1 голос
/ 17 февраля 2020

Предполагая, что a и b являются переменными ...

То, что это говорит "Назначьте значение от b до a. Если это значение не равно нулю, сделайте внутреннее из l oop (что означает "ничего не делать"). Продолжайте присваивать, пока a (после присвоения) не станет равным нулю. "

Теоретически, b может быть изменено во всей программе через прерывание или другой источник. Например, его можно сопоставить с внутренним регистром. Обратите внимание, что это также меняет a, что может вызвать цепочку событий, которая обнуляет b, заканчивая l oop.

Если b и a не изменяются / не являются изменчивыми, это может служить (по-дурацки) «ясно a, утверждать, что b - ноль». Если b не равен нулю, программа будет зависать.

Скорее всего, это будет while (a == b);, что можно трактовать как «утверждают, что a не равно b, и в противном случае зависают». . "

0 голосов
/ 18 февраля 2020
void stringCAT(char *s1, char *s2)
{
    while(*s1 != '\0')
    {
        s1++;
    }

    for(; *s1 = *s2; s1++,s2++)
    {
        ;
    }
}

for l oop включает ваш ответ. Середина оператора for - это условие типа while(). Это для l oop работает до *s2= '\0' и копирует данные из s2 в s1 одновременно. Это действительно для типа символа.

0 голосов
/ 17 февраля 2020

если b = 0, то он не будет выполнен. В противном случае это будет бесконечный l oop. Здесь значение b назначено в a. Надеюсь, ты понял.

...