gpt4 book ai didi

c - scanf() 在 printf() 之前是如何执行的

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:04 24 4
gpt4 key购买 nike

我有以下代码来实现 pow(),就像在 math.h 库中一样。那么我有两个问题:

  1. 为什么 scanf() 语句之前接受输入它从 printf() 函数打印 "power:"?
  2. 如何计算大整数的幂,例如假设计算出的幂为:22235645654789787978797797(仅作为示例)。我如何计算和打印它。

    #include <stdio.h>
    unsigned long long int pow(unsigned long long int n,unsigned long long int d);
    int main(){

    unsigned long long int a,x,n;
    printf("Number:");
    scanf("%u\n",&a);
    printf("power:");
    scanf("%u\n",&n);
    x = pow(n,a);
    printf("%u\n",x);
    }
    unsigned long long int pow(unsigned long long int n,unsigned long long int d){
    if(n+1==1)
    return 1;
    return d*pow(n-1,d);
    }

Image

在图像中,您可以看到变量 n 的输入在从 printf() 打印 "power:" 之前获取输入,因此无论您键入什么输入.

请帮助我理解它。欢迎提出任何建议和意见。

最佳答案

您的 printfscanf 按顺序执行。由于缓冲,输出看起来很乱。

"power:" 被打印时,它最终进入缓冲区,直到输入一个数字才被刷新。添加 \n 可以解决控制台输出的问题。您还可以显式调用 fflush(STDOUT) 以将缓冲的字符串打印到屏幕上。

注意:您没有正确读取/打印 unsigned long long。使用 llu,或查看 this Q&A对于 64 位无符号整数的正确格式说明符:

unit64_t a, x;
...
scanf("%"SCNu64, &a);
printf("n: %"PRIu64"\n", x);

关于c - scanf() 在 printf() 之前是如何执行的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com