scanf 之后的 printf 总是显示 1(相同的意外值)

printf after scanf always displays 1 (same unexpected value)

好的,我正在尝试在 VS 中编写一个基本程序。输入一个数字然后它被打印出来。始终打印 1。

int main(){
    printf("Enter an integer: ");
    int n = scanf_s("%d", &n);
    printf("%d", n);
}

您正在将 scanf_s() 的返回值分配给变量 n,这意味着如果读取成功,程序将打印 1

你应该做的是

int numberOfItemsMatched;
int readValue;

numberOfItemsMatched = scanf_s("%d", &readValue);
if (numberOfItemsMatched == 1)
    printf("%d\n", readValue);

我希望变量名是不言自明的,使用这种名称总是一个好主意。

return scanf 的类型是读取的项目数。因此,如果 scanf 成功读取了一项,那么它 return 就是分配给 n 的一项。因此输出为 1。因此单独声明 n 和 scanf。