#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;
}
- Наконец, прочитайте больше о спецификаторах формата в операторах scanf и
printf.