Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153977
  • 博文数量: 37
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-13 18:49
文章分类

全部博文(37)

文章存档

2010年(1)

2009年(19)

2008年(17)

我的朋友

分类: C/C++

2008-10-18 14:51:13

首先来看看下面这个程序

#include <stdio.h>
int main(){
    int arr[]={6,7,8,9,10};
    int *ptr=arr;
    *(ptr++)+=123;
    printf("%d,%d",*ptr,*(++ptr));
    printf("%d,%d",*ptr,
*(ptr++));
    return 0;
}

在linux下编辑得到的结果是 8,8  9,8

而在windows下则得到结果 8,8  8,8

首先明确一点:printf从右边开始处理参数,也就是说会先处理程序中的*(++ptr)*(++ptr)

结果中差别主要在printf("%d,%d",*ptr,**(++ptr);中的第一个输出。

这里可能是 在linux下,将两个参数单独作为一个步骤,也就是说执行**(++ptr);以后就++操作。而在windows下是将printf作为一个整体操作,也就是等到printf结束以后才加加。

阅读(907) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~