有关于C语言的一道小问题,有关printf函数的的原理


下面的程序输出结果是多少?


 #include<stdio.h>

main()
{
    int b = 3;
    int arr[] = {6,7,8,9,10};
    int *ptr = arr;
    *(ptr++)+=123;              
        printf("%d,%d\n",*ptr,*(++ptr));  
}

还有就是为何我Mac下的gcc和Linux的gcc出现的结果不一样???

c 编程 编辑器

十六夜黑仪 10 years, 10 months ago

简单地说,就是一个由其定义行为不确定的程序在不同平台了产生不同的结果是很正常的事情。应该避免这种未定义的行为。如果你使用 gcc 或者 clang,请加上 -O2 -Wall 命令行参数。

PS: 这么短的程序里竟然有两处行为未定义的地方……

常规护航舰 answered 10 years, 10 months ago

Your Answer