在这段代码中,当我执行它时,它有时会显示正确的nT和nF值,有时会显示正确的nF但不正确的nT(即0)。
为什么会这样呢?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    unsigned char nT,nF;
    puts("Enter No. of Testcases & Faults");
    scanf(" %hhu %hhu",&nT,&nF);
    printf("\n %hhu %hhu",nT,nF);
}

最佳答案

您需要使用%hhu作为unsigned char的格式说明符。 (晦涩的我知道:一个用于发布测验。)此外,您可能希望在格式化程序之间引入一些空格:

int read = scanf("%hhu %hhu %s", &nT, &nF, extension);


当前,您的程序的行为是不确定的。

在C99之前,您几乎完全可以依靠编译器。



进一步说明:


始终检查scanf的返回值,该返回值为您提供有关成功读取的输入数量的有用信息。
extension仅适用于4个字符和nul终止符。

关于c - 每次我运行代码时都会生成不同的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42724104/

10-12 16:08