相关疑难解决方法(0)

scanf("%d%d",&x,&x)是否定义良好?

以下代码是否定义良好?

#include <stdio.h>

int ScanFirstOrSecond(const char *s, int *dest) {
    return sscanf(s, "%d%d", dest, dest);
}

int main(void) {
    int x = 4;
    ScanFirstOrSecond("5", &x);
    printf("%d\n", x);  // prints 5

    // Here is the tricky bit
    ScanFirstOrSecond("6 7", &x);
    printf("%d\n", x);  // prints 7
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

换句话说,这些...论点是否暗示restrict了它们?

我发现最适用的C规范是

fscanf函数依次执行格式的每个指令.......C11dr§7.21.6.24

c restrict language-lawyer

15
推荐指数
1
解决办法
358
查看次数

为什么 C99 中的这个语句在 C11 中发生了变化?

C99标准:

在上一个和下一个序列点之间,一个对象的存储值最多应通过表达式的评估修改一次

C11标准:

如果一个标量对象的副作用相对于同一个标量对象的另一个副作用是无序的,则行为是未定义的。

那么 C99 标准的这个定义是否不完整,因此它在 C11 中进行了更新,因为它只包含术语object而不包含术语scalar object

c object c99 language-lawyer c11

7
推荐指数
1
解决办法
241
查看次数

标签 统计

c ×2

language-lawyer ×2

c11 ×1

c99 ×1

object ×1

restrict ×1