我学习C++,指针/引用和一些基本知识。我做了一个小程序,计算两次之间的差异。我的程序运行良好,但我不知道为什么在变量前有&符号的情况下,为什么最后会返回一个大值,如123123123:53442344。有我程序的代码

#include <iostream>
#include <stdio.h>

int main() {
    int userHour, userMinutes;

    printf_s("Enter first hour: ");
    scanf_s("%d:%d", &userHour, &userMinutes);

    int difference = userHour * 60 + userMinutes;

    printf_s("Enter second hour: ");
    scanf_s("%d:%d", &userHour, &userMinutes);

    difference = abs(difference - (userHour * 60 + userMinutes));
    userHour = difference / 60;
    userMinutes = difference % 60;

    printf("Difference is %02d:%02dh", &userHour, &userMinutes);
}

问题出在代码的最后一行,我在调试器或Google中找不到答案(inb4我在编程方面很新,请教我如何寻找答案:()

最佳答案

&userHour意味着给我一个指向userHour的内存地址的指针。因此,printf将打印该内存地址的值。 (请注意,不是存储在该地址的内存中的值,而是内存地址本身的数值。)

您需要printf("Difference is %02d:%02dh", userHour, userMinutes);

09-08 05:43