使用printf中的指针打印多个值

时间:2015-10-11 16:41:55

标签: c

我无法找到以下代码的问题。我收到警告信息"操作' ptr'可能是未定义的"在printf声明。结果也以相反的顺序打印(7表示打印元素1和2表示元素2)

int main()
{
    int a[4] = {2,7,9,0};
    int *ptr=a;
    printf("Element1 = %d Element 2 = %d", *ptr, *ptr++);
    ptr++;
    return 0;
}

2 个答案:

答案 0 :(得分:4)

C标准没有定义参数的评估顺序。尝试使用*(ptr + 1)代替* ptr ++,也可以用ptr [1]代替。

答案 1 :(得分:2)

函数参数没有sequenceing or specified evaluation order所以你不知道哪个参数将首先被评估,*ptr*ptr++(甚至是字符串文字) ,这会导致未定义的行为