gpt4 book ai didi

c - 使用C语言函数求一个数的半值

转载 作者:行者123 更新时间:2023-11-30 19:51:49 24 4
gpt4 key购买 nike

这是我编写的使用函数查找数字的一半值的代码:

#include <stdio.h>
#include <conio.h>

int half(int);
void disp();

int main()
{
disp();
}

void disp()
{
int a, ans;
printf("Enter a number = \n");
scanf("%d",&a);
ans = half(a);
printf("half of a is %d\n", ans);
printf("value of a = %d\n", a);
}

int half(int x)
{
x = x / 2;
printf("value of x = %d", x);
}

当我在 half 函数中添加 print 语句时,但当我删除 printf 语句时,即 printf("value of x = %d",x ),我得到了正确的结果。我的代码有什么问题?

最佳答案

正如评论中所述,您不会从 half() 返回任何内容函数并且您没有传递指针作为参数。缺少 return或缺少传递指针,例如half (int *);你无法对x做任何事情在half将反射(reflect)在main()中.

通常,您希望将输出保留在调用函数中,并仅将函数的任何输出保留到错误条件。如果你return来自 half() 的值或将整数指针传递给 half ,那么您可以自由使用返回的值(或更新后的指针)来处理 main() 中减半值的输出。以下面的 half() 为例功能:

int half (const int i)
{
if (!i) return 0;
int s = 1, v = i;
if (i < 0) s = -1, v = -i;

return (v >> 1) * s;
}

不生成任何输出,仅在 i = 0 的特殊条件下生成输出以特殊方式处理。该值返回,因此所有剩余输出都将来自调用函数(在本例中为 main())。例如

#include <stdio.h>
#include <stdlib.h>

int half (const int i);

int main (int argc, char **argv) {

int int_max = 0x7fffffff, int_min = -int_max - 1;
long v = argc > 1 ? strtol (argv[1], NULL, 10) : 128574;

if (v > int_max || v < int_min) {
fprintf (stderr, "error: integer value exceeds integer storage.\n");
return 1;
}

printf ("\n origial value : %ld\n half value : %d\n",
v, half ((int)v));

return 0;
}

(注意:奇数整数值除以 2 将导致截断,无论整数除法如何执行)

使用/输出

$ ./bin/fn_half

origial value : 128574
half value : 64287

$ ./bin/fn_half -4

origial value : -4
half value : -2

$ ./bin/fn_half -0

origial value : 0
half value : 0

$ ./bin/fn_half 2147483648
error: integer value exceeds integer storage.

关于c - 使用C语言函数求一个数的半值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35664938/

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