2015-06-27 7 views
0

Я делаю этот простой код, где, если я ставлю два числа, и он показывает решение. Это код:Ошибка не была объявлена ​​в этой области

#include <stdio.h> 

int main() 
{ 
    printf("Enter two numbers:") 
    ;scanf("&d &d", a, b) 
    ;printf("=======================\n"); /* */ 
    /* */ 
    printf("The sum of %d and %d is %d.\n\n", 3, 4, 3 + 4) 
    /* */ 
    ;printf("The difference of %d and %d is %d. \n\n", 3, 4, 3-4) 
    /* */ 
    ;printf("The product of %d and %d is %d. \n\n", 3, 4, 3*4) 
    /* sum of squares would be a*a + b*b */ 
    ;printf("The sum of the squares of %d and %d is %d. \n\n", 3, 4, 3*3 + 4*4) 
    ;printf("**end**"); /* :-) */ 
    ;return (0); 
} 

, и я получаю сообщение об ошибке, которая говорит:

[Error] 'a' was not declared in this scope 
and 
[Error] 'b' was not declared in this scope 

Что случилось с ним?

+0

необходимо объявить их, как говорится. как «int a, b;» –

+0

Интересный стиль: _ (. – this

+0

Вам нужно объявить переменные a и b, прежде чем пытаться хранить что-либо в них. – tylerism

ответ

0

Вам нужно объявить переменные перед тем, как попытаться сохранить что-либо в них.

int a,b; 

Эта линия должна быть первой линией в вашей основной функции.

EDIT: УВЕРЕН, что ваш код выглядит следующим образом?

int main() 
{ 
    int a,b; 
    printf("Enter two numbers:") 
    ;scanf("&d &d", a, b) 
    ;printf("=======================\n"); /* */ 
    /* */ 
    printf("The sum of %d and %d is %d.\n\n", 3, 4, 3 + 4) 
    /* */ 
    ;printf("The difference of %d and %d is %d. \n\n", 3, 4, 3-4) 
    /* */ 
    ;printf("The product of %d and %d is %d. \n\n", 3, 4, 3*4) 
    /* sum of squares would be a*a + b*b */ 
    ;printf("The sum of the squares of %d and %d is %d. \n\n", 3, 4, 3*3 + 4*4) 
    ;printf("**end**"); /* :-) */ 
    ;return (0); 
} 
+0

где именно я это положил ??? p.s im a newbie – Naxs

+0

@Naxs, прежде чем использовать переменные. По существу, в вашем случае, прежде чем вы вызове scanf(). Иногда рекомендуется объявлять все переменные в начале функции, делает ее более ясной, что используется в этой функции. –

+0

ОК, так что я сделал то, что вы мне сказали, но «Введите два номера» отсутствует на моем выходе – Naxs

1

Прежде всего объявление, если две переменные отсутствуют. Объявить их первым, в вашем случае междунар будет лучше, так:

int a, b; 

Вам также нужно передавать указатели на функции зсапЕ(), так что он может записать значения в переменных, например, так:

scanf("%d %d", &a, &b); 

также хорошо проверить, действительно ли значения были прочитаны или нет. scanf() возвращает количество значений, которые он успешно проанализировал на входе, поэтому в вашем случае он должен вернуть 2, если это будет успешно, проверьте это.

Кроме того, это не плохая идея, чтобы инициализировать ваши переменные, так что, возможно, сделать это так, вместо этого:

int a = 0, b = 0; 

также вы, кажется, не использовать переменные в остальной части вашей программы, вы можете что-то с этим поделать.

0

1. Обязательно объявлять переменную перед использованием. Вы используете a и b в нижней строке. но вы этого не заявляли раньше. Таким образом, это обязательно даст вам ошибку.

scanf("&d &d", a, b); 

2.It также обязательное использование «&» с и Ь, получая значение от пользователя. Он не даст вам ошибки, но может дать неверные результаты, которые вам не нужны.

scanf("&d &d", &a, &b); 

3. Идентификация также не очень хорошая. Вам нужно использовать ';' в конце инструкции вместо того, чтобы указывать следующий оператор или любую другую строку кодирования. Это не даст вам ошибки, но легко понять код и легко читаемость.

printf("Enter two numbers:") 
;scanf("&d &d", a, b) 
+0

Это лишнее, что параметры, если ваша строка формата не содержит спецификаторов формата (например, '% d') –

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