c语言printf里的自增,笔试题记录:C语言——函数printf()的执行机制;先自增与后自增的区别;取值运算与自增运算的优先级...

考点:

函数printf()的执行机制:参数按照从右至左的顺序入栈,在调用时出栈;

考察运算符“++”在变量之前、变量之后的运算机制,即是先赋值/还是先自增

*(p++)、*(++p)、*(p+1)之间的区别

后面两项主要是考察:取值运算与自增运算的优先级;(自增运算>取值运算)

*p++与*(p++)——>没有区别

*++p与*(++p)——>没有区别

#include

void fc1(int arr[])

{

//分别输出,预计输出6,7;实际输出6,7

int *p = arr;

printf("---fc1---\n");

printf("%d", *p);

printf("%d\n",*(++p));

}

void fc2(int arr[])

{

//同时输出,预计输出7,7;实际输出6,7

printf("---fc2---\n");

int *p = arr;

printf("%d,%d\n",*p, *(++p));

}

void fc3(int arr[])

{

//测试++p,与p++,预计输出6,6;实际输出6,6

int *p = arr;

printf("---fc3---\n");

printf("%d", *p);

printf("%d\n",*(p++));

}

void fc4(int arr[])

{

//同时输出测试二,预计输出6,6,实际输出6,6

int *p = arr;

printf("---fc4---\n");

printf("%d,%d\n", *p,*(p++));

}

void fc5(int arr[])

{

//预计输出6,7,;实际输出6,7

int *p=arr;

printf("---fc5---\n");

printf("%d %d",*p,*(p+1));

}

void fc6(int arr[])

{

//区分*++p与*(++p);//arr2[]={1,3,5,7,9},预计输出1,3;实际输出1,3

int *p=arr;

printf("---fc6---\n");

printf("%d %d",*p,*++p);

}

void fc7(int arr[])

{

//区分*p++与*(p++);//arr2[]={1,3,5,7,9}预计输出1,2;实际输出1,1

//考察取值运算符*与自增运算符++的优先级

int *p=arr;

printf("---fc7---\n");

printf("%d %d",*p,*p++);

//解析:++的优先级高于*,所以先做指针自增预算(p++预算过程为:p=p;p++,所以指针p还是指向的数组中第一个元素),在做取值运算;

}

int main()

{

int arr[] = {6,7,8,9,10},arr2[]={1,3,5,7,9};

fc1(arr);

fc2(arr);

fc3(arr);

fc4(arr);

fc5(arr);

fc6(arr2);

fc7(arr2);

return 0;

}

以下为代码段的实际运行结果:

f0d8de76f88c04c89b666b8c336b2739.png标题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值