【发布时间】:2021-04-08 23:03:38
【问题描述】:
我没学过C,我得说说下面的函数是做什么的:
x(a,b){
float *a,*b;
while(*a++ = *b++);
}
我知道这个函数是如何使用而不是浮点字符工作的,但我不明白这应该做什么。复制值或地址。 if value 为什么在while循环中?
【问题讨论】:
标签: c
我没学过C,我得说说下面的函数是做什么的:
x(a,b){
float *a,*b;
while(*a++ = *b++);
}
我知道这个函数是如何使用而不是浮点字符工作的,但我不明白这应该做什么。复制值或地址。 if value 为什么在while循环中?
【问题讨论】:
标签: c
这甚至不是“有效”代码(它基本上是有效的,20 年前,当没有类型的变量被假定为整数时)。
/*int*/ x(/*int*/a,/*int*/ b){
float *a,*b;
while(*a++ = *b++);
}
在下文中,我将假设 a 和 b 是 int*(至少在参数中)
这是未定义的行为。
float *a,*b; 隐藏给它的变量。
这两个浮点指针都未初始化(=它们可以具有所有可能的值,访问将使程序崩溃) 在 while 循环中,您正在递增未初始化的指针。这可能导致例如崩溃。
只要*b 不为零,此方法就是对值进行复制。
【讨论】:
x(a,b) float *a,*b; {...},那么这将是一个 K&R style 语法,现在已经被弃用了 30 多年。