首页 > 解决方案 > 带有浮点数的 C 函数 while(*a++ = *b++)

问题描述

我没有学习 C,我必须告诉下面的函数是做什么的:

x(a,b){
   float *a,*b;
   while(*a++ = *b++);
}

我知道这个函数是如何使用而不是浮点字符工作的,但我不知道该怎么做。复制值或地址。如果值为什么在while循环中?

标签: c

解决方案


这甚至不是“有效”代码(它基本上是有效的,20 年前,当没有类型的变量被假定为整数时)。

/*int*/ x(/*int*/a,/*int*/ b){
   float *a,*b;
   while(*a++ = *b++);
}

在下文中,我将假设 a 和 b 是int*(至少在参数中)

这是未定义的行为。 float *a,*b;隐藏给它的变量。

这两个浮点指针都未初始化(=它们可以具有每个可能的值,访问将使程序崩溃)在while循环中,您正在递增未初始化的指针。这可能导致例如崩溃。

只要*b不为零,此方法就是对值进行复制。


推荐阅读