C-不评估条件

时间:2018-10-12 16:41:02

标签: c if-statement intervals

有人知道在评估这些条件时可能会出现问题吗?整数应该被分配,以防万一它在od -10000到10000之间的间隔中,但是它不起作用。谢谢

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

int main(int argc, char *argv[])
{
    int vstup1;
    int vstup2;
    int sucet = 0;
    int rozdil = 0;
    int soucin = 0;
    int podil = 0;
    float prumer = 0;

    printf("INPUT FIRST INTEGER\n");

    if (scanf("%d", &vstup1)&& vstup1 <= -10000 && vstup1 >= 10000) {
        printf("WRONG INPUT\n");
        return 0;
    }

    printf("INPUT SECOND INTEGER\n");
    scanf("%d", &vstup2); 
    if (vstup2 <= -10000 && vstup2 >= 10000) {
        printf("WRONG INPUT\n");
        return 0;
    }

    sucet = (vstup1 + vstup2);
    rozdil = (vstup1 - vstup2);
    soucin = (vstup1 * vstup2);
    podil =  (vstup1 / vstup2);
    prumer = ((vstup1 + vstup2)/2);

    printf("Desitkova soustava: %i  %i\n", vstup1, vstup2);
    printf("Sestnactkova soustava: %x %x\n", vstup1, vstup2);  
    printf("Soucet: %i + %i = %i\n",vstup1, vstup2, sucet);
    printf("Rozdil: %i - %i = %i\n",vstup1, vstup2, rozdil);
    printf("Soucin: %i * %i = %i\n",vstup1, vstup2, soucin);
    if (vstup2 == 0){
        printf ("Nedefinovany vysledek!\n");
        return 0;
    }
    else {
        printf("Podil: %i / %i = %i\n",vstup1, vstup2, podil);
    }
    printf("Prumer: %0.1f \n",prumer);

    return 0;
}

1 个答案:

答案 0 :(得分:4)

  

if (vstup2 <= -10000 && vstup2 >= 10000) {

vstup2没有任何值,该值可能都小于或等于-10000且大于或等于10000。如果这是被跳过的条件,则可能是编译器足够聪明看到条件永远无法满足。也许您打算像这样使用OR?

vstup2 <= -10000 || vstup2 >= 10000
相关问题