"<" не работает в операторе if

Поэтому я писал программу для кассовых аппаратов. Я сделал в основном все. Моя программа почти закончена. Но у меня есть одна проблема. Эта программа просит пользователя выбрать продукты и рассчитать общую сумму в конце, если пользователь хочет пойти на вынос. но когда пользователь должен ввести наличные деньги для оплаты, я сталкиваюсь с проблемой. если наличные деньги, предоставленные пользователем, превышают общее количество продуктов, которые пользователь выбрал для покупки, он рассчитывает и возвращает пользователю изменение, но если наличные деньги заданный пользователем меньше, чем общее количество продуктов, выбранных пользователем, он должен отображать "Недостаточное количество задано. Добавить еще". Но вместо этого он отображает целое значение в отрицательной форме. Он отображает изменение в отрицательной форме. приведен пример вывода в нижней части. Пожалуйста, помогите мне. Это так удручающе. Оператор '<', похоже, не работает.! =, ==,> работает отлично. Спасибо!

#include <stdio.h>
#include<conio.h>
#include<stdlib.h>

int main()
{
int a=8,b=10,c=20,d=50,e=30,x,subtotal1=0,subtotal2=0,subtotal3=0,subtotal4=0,subtotal5=0,shopping=1,cash;
int total=subtotal1+subtotal2+subtotal3+subtotal4+subtotal5;
char choice,code,choice2;
printf("                                           WELCOME TO KFC!           \n");
printf("Here are our sample list of products you might be interested in.\n\n");
while(shopping)
{
    printf("\nChoose your product   Enter product code i.e:A,C etc\n\n");
    printf("[A]\n");
    printf("[B]\n");
    printf("[C]\n");
    printf("[D]\n");
    printf("[E]\n");
    printf("[Q] for Quitting\n\n");




    code=getch();

    if(code=='q' || code=='Q')exit(0);

    if(code=='a' || code=='A')
    {
        printf("You have chosen 'A' and price is 8$\n\n");
        printf("Enter Quantity:\n\n");
        scanf("%d",&x);
        subtotal1=a*x;
        printf("Subtotal price is %d\n\n",subtotal1);
    }
    if(code=='b' || code=='B')
    {
        printf("You have chosen 'B' and price is 10$\n");
        printf("Enter Quantity:\n");
        scanf("%d",&x);
        subtotal2=b*x;
        printf("Subtotal price is %d\n",subtotal2);
    }
    if(code=='c' || code=='C')
    {
        printf("You have chosen 'C' and price is 20$\n");
        printf("Enter Quantity:\n");
        scanf("%d",&x);
        subtotal3=c*x;
        printf("Subtotal price is %d\n",subtotal3);
    }
    if(code=='d' || code=='D')
    {
        printf("You have chosen 'D' and price is 50$\n");
        printf("Enter Quantity:\n");
        scanf("%d",&x);
        subtotal4=d*x;
        printf("Subtotal price is %d\n",subtotal4);
    }
    if(code=='E' || code=='e')
    {
        printf("You have chosen 'E' and price is 30$\n");
        printf("Enter Quantity:\n");
        scanf("%d",&x);
        subtotal5=e*x;
        printf("Subtotal price is %d\n",subtotal5);
    }

     printf("Do you want to shop more?\n");
     choice=getch();

     if(choice=='y' || choice=='Y')shopping=1;
     else if(choice=='n' || choice=='N')
     {
         total=subtotal1+subtotal2+subtotal3+subtotal4+subtotal5;
         printf("Do you want to add them to takeout?\n\n");
         choice2=getch();
         if(choice2=='y' || choice2=='Y')
         {

             printf("Enter cash:\n");
             scanf("%d",&cash);
             total=subtotal1+subtotal2+subtotal3+subtotal4+subtotal5;
             if(total < ("%d",&cash))
             {
              printf("You have given %d\n",cash);

              printf("Your change is %d\n",cash-total);
             }
            else printf("Insufficient amount given.Add more.\n");

             shopping=0;
         }
         else shopping=1;
     }

}    

}   


                                       WELCOME TO KFC!
Here are our sample list of products you might be interested in.


Choose your product   Enter product code i.e:A,C etc

[A]
[B]
[C]
[D]
[E]
[Q] for Quitting

You have chosen 'A' and price is 8$

Enter Quantity:

12
Subtotal price is 96

Do you want to shop more?
Do you want to add them to takeout?

Enter cash:
90
You have given 90
Your change is -6

Но это должно отображать

"Дано недостаточное количество. Добавить больше"

это не делает этого. почему?

1 ответ

Решение

В вашем коде

 if(total < ("%d",&cash))

неправильно. Это не делает ничего значимого. Вы можете написать

 if(total < cash)

FWIW, if(total < ("%d",&cash)) компилируется, поскольку нет синтаксической ошибки, при этом используется свойство оператора запятой, который в качестве результата использует только операнд RHS.

Однако, поскольку код включает в себя нарушение ограничения для реляционного оператора, согласно главе §6.5.8, C11таким образом, этот код вызывает неопределенное поведение.

Другие вопросы по тегам