2013-12-26 2 views
1

Я написал простой код с dev, но он не возвращает ничего. Но с ответом на блок кода. Какая проблема?Печать в Devc

#include <stdio.h> 

int main() { 
    int x,y,z; 
    scanf("%d%d",&x,&y); 
    while(z!=0){ 
     z=x%y; 
     printf("%d",z); 
    } 
    return 0; 
} 
+0

Это устраняет проблему? –

+0

Я пробовал, но проголосовал за 15 репутации, и у меня нет, я новичок на этом сайте, извините. –

ответ

7

Это вызывает undefined behavior потому что z используется неинициализированным.

while(z!= 0) 
    ^
     | 
    z is uninitialized 

Вы можете получить любую ожидаемую или неожиданную информацию. Программа может также сбой. В разных компиляторах вы можете получить разные результаты, что и есть здесь.

+1

Также вы можете компилировать с предупреждениями, и большинство компиляторов сообщим вам об этом. Для gcc try -Wall -Wextra -Werror – Brandin

1

Вы не можете видеть результат, потому что он закрывает окно терминала/выхода, как только программа выйдет.

В коде :: block они запускают скрипт, чтобы удерживать окно вывода, пока вы не нажмете enter. вы можете иметь такой же эффект, используя вызов getch() в конце, перед возвратом. это будет ждать ввода и даст вам возможность увидеть результат.

Кроме того, ваша программа имеет несколько проблем, как указывали другие ответы. исправить их соответственно.

+0

Это не так. – haccks

+0

@haccks, OP спросил, как 'не возвращает ничего. Но с ответом на код-блок показывает', поэтому я думал, что он обеспокоен тем, что не может видеть ничего как вывод, а в code :: block. – Dipto

8

Две проблемы я вижу:

1. Value to z is un-assigned. So garbage. 
2. Value of z will not change, so it's infinite loop. 
1

в своем коде вы были Назначенный г, но не инициализирована г и вы проверяете while(z!=0) так что ваш код не возвращает значение, Кулак назначается г на любое значение, например, из scanf.

Смежные вопросы