为什么我的C程序在不同的编译器中给出不同的输出?

舒布·罗伊(Shubh Roy)

我程序的结果不是我期望的,并且在不同的编译器上也有所不同。

我已经在三个编译器上尝试过,其中两个给出相同的结果。但是我想将两个结果结合起来。

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

int main()
{
    int iRandomNum = 0;
    int iUserInput = 0;
    const int VIP = 7;
    srand(time(NULL));
    iRandomNum = (rand() % 10) + 1;

    printf("\nGuess a number between 1 to 10.\n Make a wish and type in the number.\n");

    scanf("%d", &iUserInput);

    if(isdigit(iUserInput))
    {
         printf("\n\nYou did not enter a digit between 1 to 10.\n\n");
    }
    else
    {
        if(iUserInput==iRandomNum || iUserInput==VIP)
            printf("\n\nYou guessed it right!\n\n\n");
        else
            printf("\n\nSorry the right answer was %d.\n\n\n", iRandomNum);
    }
    return 0;
}

当我选择任何数字时,如果我在此数字猜谜游戏中没有选择正确的数字,程序只会提醒我。但是对于7,我们总是有正确的答案。这发生在两个在线编译器中。但是在clang中,当我这样做时&不起作用。等号功能然后不起作用

火焰

使用%d格式说明符,您正在读intiUserInput没错,但是您isdigit可以尝试查看数字是否在1之间10但是,此函数用于确定achar是否在'0'之间'9'那是不一样的-假设ASCII这些字符分别等于4857因此,您isdigit很可能会发现输入的数字是否在48之间57(尽管不能保证使用ASCII,因此使用不同的编码可能会导致不同的结果)。

相反,检查应为:

if((iUserInput >= 1) && (iUserInput <= 10)) {...}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

%n格式说明程序在不同的编译器上提供不同的输出。为什么?

为什么同一编译器的不同版本给出不同的结果?

为什么不同的编译器生成不同大小的文件?

C ++代码在不同的编译器中显示不同的输出,这是意外的

为什么我的 C++ 图形程序没有使用 g++ 编译器显示任何输出?

模板C ++编译器差异VC ++不同输出

为什么c ++编译器在对两种不同类型的数字变量使用`std :: max()`函数时会给出错误

为什么我的xCode编译器输出“ lldb”?

为什么我的程序没有显示任何输出?0 错误,0 警告但没有输出?我正在使用 Dev C++ 编译器

为什么我的并行 for 循环会给出不同的输出?

为什么go的编译器“ gc”使用与C不同的调用约定?

为什么C编译器优化切换,以及是否不同

为什么不同编译器或不同平台中的thread_local有不同的结果?

为什么我的C ++代码在ideone和Codeforces自定义测试中给出2个不同的输出?

为什么我的代码仅通过注释c ++中的单个打印cout语句来给出不同的输出?

在不同的编译器中的程序集上定义函数

为什么参数包扩展在不同的C ++编译器中会有所不同?

为什么以下语句在Java中给出不同的输出?

为什么普通的C编译器在输出中包括源文件名?

在 Objective-C 中,为什么编译器会关心两个完全不同的视图控制器类中的同名变量?

为什么>>运算符在不同的编译器上显示不同的结果?

为什么不同的Java反编译器显示不同的源代码?

为什么在NOT操作的情况下C中的sizeof运算符给出不同的输出?

为什么以下代码在C,Python中给出不同的输出?

为什么我在用于指定数组大小的 const int 上得到不同的编译器行为?

为什么我的代码中的计算给出了与计算器不同的答案?

每当我更改变量初始化的位置时,为什么此c程序的输出会给出不同的结果?

为什么C和C ++编译器将显式初始化和默认初始化的全局变量放在不同的段中?

C ++ 11的不同编译器行为