C/C++知识要点4——printf函数以及cout的计算顺序

printf函数的计算顺序:先从右到左压栈,然后从左到右出栈

例程:

#include"stdio.h"

int main()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	int *ptr = arr;
	printf("%d %d\n", *ptr, *(++ptr));

	return 0;
}

输出:2 ,2

计算顺序:先计算*(++ptr)。进行压栈,然后计算*(ptr)。再压栈。

注意:++ptr 和 ptr++ 的计算顺序。会导致不同结果。

#include"stdio.h"

int main()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	int *ptr = arr;
	printf("%d %d\n", *ptr, *(ptr++));

	return 0;
}

输出:2, 1

计算顺序:先压栈*(ptr)。然后运行++操作,之后。压栈*(ptr)。输出的时候。从左到右依次出栈,所以结果为2,1

cout 计算顺序也一样。

见例程:

#include"iostream"
using namespace std;
int main()
{
	int arr[] = { 1, 2, 3, 4, 5 };
	int *ptr = arr;
	cout << *(ptr) << " " << *(ptr++) << " "<<*(ptr++)<<endl;
	return 0;
}

输出:

时间: 2024-12-18 17:17:03

C/C++知识要点4——printf函数以及cout的计算顺序的相关文章

c语言中printf()函数中的参数计算顺序

今天看到了一个关于printf()函数计算顺序的问题,首先看一个例子: #include<stdio.h> int main() { printf("%d---%d---%d",printf("ab"),printf("c"),printf("eee")); } 输出结果为: 这说明printf()函数在计算的时候顺序是从右往左的,但最后输出的顺序是从左往右的.所以遇到类似题目时,应该根据运算顺序和输出顺序灵活判断

linux系统下printf函数可变参数的计算顺序

#include<stdio.h>  void main()  {  int i=5;  //printf("%d,%d,\n",i,i++); //输出 6,5, //printf("%d,%d,\n",i++,i); //输出 6,6, //printf("%d,%d,\n",i,++i); //输出 6,6, //printf("%d,%d,\n",++i,i); //输出 6,6, //printf(&qu

Golang 接口与反射知识要点

目录 Golang 接口与反射知识要点 1. 接口类型变量 2. 类型断言 3. 鸭子类型 4. 反射机制 5. reflect 包 TypeOf().ValueOf() Type().Kind() Interface() 6. 反射对象的可设置性 SetXXX(), CanSet() Elem() 7. Struct 的反射 NumField(), Type.Field(i int) Value.Field(i int) 参考文档 Golang 接口与反射知识要点 这篇文章以 Go 官方经典博

CentOs7下systemd管理知识要点

centOs7的一个巨大的变动就是用systemd取代了原来的System V init.systemd是一个完整的软件包,安装完成后有很多物理文件组成,大致分布为,配置文件位于/etc/systemd这个目录下,配置工具命令位于/bin,和/sbin这两个目录下,预先准备的备用配置文件位于/lib/systemd目录下,还有库文件和帮助手册等等.这是一个庞大的软件包.详情使用rpm -ql systemd即可查看. systemd已经不仅仅是一个启动管理软件,而且是一个综合性的服务管理软件,它

字符编码知识简介和iconv函数的简单使用

字符编码知识简介和iconv函数的简单使用 字符编码知识简介 我们知道,在计算机的世界其实只有0和1.期初计算机主要用于科学计算,而我们知道一个数,除了用我们常用对10进制表示,也可以用2进制表示,所以只有0和1就可以进行科学计算,但是为了便于计算,大神们还是向计算机中引入的编码,比如通常我们用补码表示一个负数.所以编码这个东西,是从一开始就伴随着计算机的.到现在,我们的生活已经完全离不开计算机了,计算机也不仅仅用于科学计算了,更多地应用系信息处理.那计算机怎样表示与我们生活息息相关的事物呢,一

关于printf函数的返回值问题

#include <stdio.h> #include <stdlib.h> int main() { printf("%d", printf("%d", printf("%d", 43))); system("pause"); return 0; } 大家平时经常使用printf这个输出函数,但是有多少人想过它的返回值是什么?或者想过它有没有返回值! 通过上面程序的运行结果就可以知道printf函数的

C语言中的printf函数的输入输出问题

这个问题是个很基础,但是我一直不知道的问题,是同学问了之后才知道的,长知识了. 这里要注意的是,printf函数是从右向左计算,从左向右输出. 距离如下: #include <stdio.h> main() { int i=8; printf%d, %d, %d, %d\n",i,--i,i,i--); } 此程序输出结果为:7, 7, 8, 8.原因是,printf()函数中,i++,i-- 时,i的值是在printf()函数之后才会被刷新,所以在printf()函数中,i++,i

printf函数用法小记

By francis_hao    Aug 26,2017 C语言中printf函数是一个比较常用的函数,但是常用并不代表完全了解,本文翻译了printf的man手册,介绍了其全部功能(不包括man手册中不建议使用的). printf – 格式化输出转换 概述 #include <stdio.h>int printf(const char *format, ...); 描述 printf()函数通过给定的format产生格式化的输出. 若函数执行成功,返回打印的字节数(不包括字符串结尾的nul

总结了零基础学习Java编程语言的几个基础知识要点

很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这些Java的基本概念也是必不可少的,死记硬背肯定是不行的,重在理解,理解它们之间的区别与联系,分别有哪些应用.想想这些代码中用到了哪些知识点.不要一味地照着书本敲代码.而不去理解. 1.Java编程语言,即语法. 2.Java文件格式,即各种文件夹.文件的后缀. 3.Java虚拟机(JVM),即处理