IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【c语言题目】由此引发的思考 -> 正文阅读

[C++知识库]【c语言题目】由此引发的思考

printf函数中的工作以及函数返回值


问题描述

KiKi写了一个输出“Hello world!”的程序,BoBo老师告诉他printf函数有返回值,你能帮他写个程序输出printf(“Hello world!”)的返回值吗?
输入描述:

输出描述:
包括两行:
第一行为“Hello world!”
第二行为printf(“Hello world!”)调用后的返回值。

printf("%d",printf("Hello world!\n"));

以上是我一开始写的代码,它是错误的,


原因分析:

那代码为什么是错误的呢?

因为printf返回值是输出的字符个数,当然\n也是其中一个。返回值永远大1
我下意识忽略了它才会造成错误


解决方案:

printf("\n%d",printf("Hello world!"));正确

那么为什么对呢?

这就要从printf的工作原理解释了:
printf是从左向右读取的,把先读取到的放到栈底,最后读取放到栈顶,处理的时候是从栈顶开始处理的,所以我们看到的是先打印hello world!再打印换行符,在打印printf返回值

由此我上网搜了一道题:

int arr[] = {11, 12, 13, 14, 15};
int* p = arr;
*(++p) += 100;
 printf("%d %d",*p, *p++);    //结果是13 112

解释:

arr是数组首元素地址所以开始p指向arr[0]++p:给p+1,p指向了arr[1],又因为a+=1操作符不同于a = a + 1;前者a执行一次后者a执行两次,所以把该表达式解释为:arr[1] += 100; arr[1] = 112
*p++:先执行*p,再给p+1,p指向了arr[2];
所以打印的*p变成了arr[2] = 13; 

ps:本人新手一枚,若大家发现错误,请指正!(一起进步)

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:19:47  更:2022-07-21 21:20:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 3:37:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码