printf函数的计算

以下内容为自学笔记缺乏严谨性,如有错误和不足请大佬指正

基础:

print函数的计算是从右向左进行;

	int arr[] = { 6,7,8,9 };
	int* ptr = arr;
	printf("%d %d", *ptr, *(++ptr));//7 7

例如这段代码,输出结果为 7 7 

因为print函数的计算是从右向左进行所以,先进行*(++ptr)的计算然后才是*ptr,所以输出结果为7 7

进阶:

遇到i++,会把此时i的值当作最后的输出值,注意,确定为输出后,i还会自增;

遇到i++i,仅仅修改当前i的值,最后才输出i

#include<stdio.h>   
int main()   
{   
    int i=2;   
    printf("%d,%d,%d,%d,\n",i++,++i,i,i++);   
    printf("%d\n",i);
    return 0;
}  

输出结果为4552   \n   5

分析过程:

从右往左看:printf("%d,%d,%d,%d,\n",i++,++i,i,i++);
首先,i++,第四位的输出定格在2,再运算,i的值是3。
其次,i,第三位的输出不能确定,因为前面还有运算,此时i是3。
然后,++i,先运算,此时i的值是4,但第二位的输出还不能确定。
最后,i++,第一位的输出定格在4,再运算,i的值是5,此时可以确定倒数第二位和第三位的输出都是5

验证结论:

再在前面加一个++i,如果结论成立的话,所以的i和++i会变成6其余不变

int main()
{
    int i = 2;
    printf("%d,%d,%d,%d,%d,\n", ++i, i++, ++i, i, i++);
    printf("%d\n", i);
    return 0;
}



 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值