【问题标题】:C function while(*a++ = *b++) with floats带有浮点数的 C 函数 while(*a++ = *b++)
【发布时间】:2021-04-08 23:03:38
【问题描述】:

我没学过C,我得说说下面的函数是做什么的:

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

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

【问题讨论】:

    标签: c


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 谢谢你,这就是我坚持的。代码无效。现在我明白了。
    • 考虑接受这个答案,我可以帮助你
    • @GoldenRC 或者,如果您的意思可能是 x(a,b) float *a,*b; {...},那么这将是一个 K&R style 语法,现在已经被弃用了 30 多年。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2020-12-25
    相关资源
    最近更新 更多