Почему я получаю символ на выходе, когда мой ввод равен 5 или более 5? Это чисто математическое уравнение. Если что-то не так, пожалуйста, скажите мне

#c

Вопрос:

Я скомпилировал этот код, и он отлично работает до значения 4, а затем начинает возвращать символ вместо целого числа. Я говорю о первом уравнении => x= num*2; Здесь, когда я ввожу значение num как 5, вывод возвращает a.

 #include <stdio.h>    
int main(void)
{ 
    int num;
    int x;  This right here is an integer still it returns a  character
    char s[10] = "helloworld";
    char f[10];
    scanf("%d", amp;num);                          // 
    //printf("%dn", num); 
    x = num * 2 ;
    printf("%xn", x); 
    scanf("%c", amp;f[10]);
    if(s[10] = f[10]){
        printf("helloworld");
    }
}
 

пожалуйста, скажите мне, если есть ошибка, я новичок в кодировании.

Комментарии:

1. для начала, char s[10] = "helloworld"; слишком мал, вы не оставили места для NUL терминатора, это должно быть s[11] как минимум.

2. Также для массива из десяти элементов , например f , f[10] будет запрещено, так как он использует одиннадцатый элемент.

3. И s[10] = f[10 выполняет задание , а не сравнение.

4. Короткий ответ: включите предупреждения компилятора и прочитайте их . Ваш компилятор хочет рассказать вам об этих ошибках.

5. @yash Не с базой 16.

Ответ №1:

  • Как я вижу, вы изучаете язык C, и после прочтения вашего объяснения я чувствую, что вы хотите напечатать целое значение переменной x.

Пожалуйста, замените %x на %d в операторе печати переменную x, и вы сможете успешно распечатать значение.

 #include <stdio.h>    

int main(void)
{ 
    int num;
    int x;  // This right here is an integer still it returns a  character
    char s[10] = "helloworld";
    char f[10];
    scanf("%d", amp;num);
    x = num * 2 ;
    printf("%dn", x);   // %d for integer and %x for hexadecimal values
    scanf("%c", amp;f[10]);
    if(s[10] = f[10]){
    printf("helloworld");
    }

    return 0;
}