我有以下代码来实现 pow()
,就像在 math.h 库中一样。
那么我有两个问题:
- 为什么 scanf() 语句之前接受输入
它从 printf() 函数打印
"power:"
? 如何计算大整数的幂,例如假设计算出的幂为: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); }
在图像中,您可以看到变量 n
的输入在从 printf() 打印 "power:"
之前获取输入,因此无论您键入什么输入.
请帮助我理解它。欢迎提出任何建议和意见。
最佳答案
您的 printf
和 scanf
按顺序执行。由于缓冲,输出看起来很乱。
当 "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/