搜索
查看: 2504|回复: 6
打印 上一主题 下一主题

网上视频教程里的例子,我这样改写和分析代码的对吗?

[复制链接]
楼主
发表于 2012-8-27 21:53:20 | 显示全部楼层
[ 本帖最后由 virfyf 于 2012-8-27 21:55 编辑 ]\n\n
*(s1++);与*s1++;是一样的
因为*取值运算符与++自增1运算符优先级相同,并且 结合方向是从右到左,
所以,即使是*s1++也是先s1本身++,再*取值.

验证程序
[mw_shl_code=c,true]#include <stdio.h>
int main()
{
        int *a,*b;
        a=(int*)malloc(2*sizeof(int));
        b=a;
        a[0]=1;
        a[1]=2;
        *a++;
        printf("*a++ : %d %d\n",a,*a);
        
        a=b;
        a[0]=1;
        a[1]=2;
        *(a++);
        printf("*(a++) : %d %d\n",a,*a);
        
        a=b;
        a[0]=1;
        a[1]=2;
        (*a)++;
        printf("(*a)++ : %d %d\n",a,*a);
        
        free(a);
        getch();
        return 0;
}[/mw_shl_code]

另外附上C语言运算符优先级表


C语言运算符优先级 详细列表 Slyar Home.png (123.73 KB, 下载次数: 35)

C语言运算符优先级 详细列表   Slyar Home.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表