Member 13434400 Ответов: 3

Ошибка: синтаксис выражения, предупреждение: R присваивается значение, которое никогда не используется., plz help


#include<stdio.h>
#include<conio.h>
#include<math.h>
void main( )
{
int p = 20, q = 15, r,s;
clrscr( );
r = ++p – q;
s = q+++p;
printf("p = %d q = %d s = %d \n", p, q, s);
printf("p*=q=%d\n",p*=q);
printf("%d \n", (r>s)?!:0);
}


Что я уже пробовал:

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

[no name]

В вашем коде нет R.

Patrice T

думаю, это "р".

[no name]

Это нисколько не меняет моего комментария.

Member 13434400

Р-р

Member 13434400

когда я последовал вашим инструкциям, ошибка и предупреждение были устранены. теперь программа компилируется с 0 ошибками и предупреждениями. Но когда я нажимаю Ctrl+f9, ничего не появляется...

3 Ответов

Рейтинг:
2

CPallini

Цитата:
s = q+++p;
Здесь вы должны принять решение, либо
s = q + ++p;
или
s = q++ + p;



Цитата:
printf ("%d \n", (r> s)?!: 0);
Это еще одна синтаксическая ошибка. Вы имели в виду
printf("%d \n", ( r > s ) ? 1 : 0);
?


Рейтинг:
2

OriginalGriff

Посмотрите на строку 12:

printf("%d \n", (r>s)?!:0);

"! "- это не значение, это оператор. Я думаю, вы имели в виду:
printf("%d \n", (r>s)?1:0);


Member 13434400

ошибки и предупреждения были устранены, но они не выполняются..

OriginalGriff

И что это, собственно, значит?

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

Member 13434400

когда я последовал вашим инструкциям, ошибка и предупреждение были устранены. теперь программа компилируется с 0 ошибками и предупреждениями. Но когда я нажимаю Ctrl+f9, ничего не появляется...

OriginalGriff

Возможно, это потому, что он работает слишком быстро, чтобы вы могли видеть, возможно, потому, что я понятия не имею, что делает CTRL+F9 в любой системе компиляции, которую вы используете.

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

Member 13434400

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

plz предоставьте какой-нибудь подробный ответ

OriginalGriff

Ну, возможно, так оно и есть, но это слишком быстро видно. Поскольку вы используете printf, это консольное приложение, а это означает, что при запуске оно открывает окно консоли, выполняет вашу программу и закрывает консоль, когда программа завершается. Поскольку все, что вы делаете, - это очищаете (уже очищенный) экран и выполняете три очень быстрых инструкции printf, консоль не открывается достаточно долго, чтобы вы могли увидеть ее на современном компьютере.

Есть две вещи, которые вы можете сделать с этим:
1) Используйте отладчик, чтобы он работал в вашем темпе, а не в вашем (настоятельно рекомендуется, это инструмент, который вы будете использовать больше всего, и вам нужно ознакомиться с ним как можно раньше).
Или
2) Добавьте команду ввода в нижней части основной функции, чтобы предотвратить ее закрытие окна до тех пор, пока вы не скажете ей об этом.

Member 13434400

Поблагодарить у очень многое, сэр.... Наконец-то я получил результат... :)

OriginalGriff

Пожалуйста!

Рейтинг:
0

Jochen Arndt

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

Ошибка произошла, вероятно, в этой строке:

s = q+++p;
Си/си++ нет +++ оператор. Компилятор не знал, имеете ли вы в виду
s = q + ++p;
или
s = q++ + p;

Это предупреждение просто информирует Вас о том, что у вас может быть логическая ошибка в коде, потому что вы присвоили значение r но потом никогда им не пользовался. Код будет скомпилирован и запущен, но вы можете не получить ожидаемого результата.

[РЕДАКТИРОВАТЬ]
Как видите, неплохо упомянуть номер строки (или лучше указать его в разнесенном коде). Так что я пропустил настоящую ошибку в
printf("%d \n", (r>s)?!:0);
Смотрите также другие решения.
Предупреждение является результатом этой ошибки: компилятор не оценил (r>s) из-за ошибки и лечится r поэтому как неиспользуемый.

Я также должен исправить свое вышеприведенное утверждение о +++ Компилятор должен обработать его как
s = q++ + p;
потому что ++ оператор имеет более высокий приоритет, чем оператор add.
[/РЕДАКТИРОВАТЬ]


Member 13434400

Ошибка находится в строке 12 при 0