c语言-解释下,谢谢,这个程序的运行结果

问题描述

解释下,谢谢,这个程序的运行结果

#include"stack.h"
#include

int _tmain()
{
int i=43;
printf("%dn",printf("%d",printf("%d",i)));
return 0;
}
请问结果是?为什么?

解决方案

今天又回想这个问题,发现不是之前说的那个原因,顺序还是从里向外进行输出,第一次是输出i的原值,而第二次则是输出第一结果的长度,因为第一次是43,长度为2,所以输出结果为2,第三次捕获到第一次结果为2,长度为1,所以输出1,如果你在第一个%d后面加空格,则第二次输出的就是3,而不是2了。

解决方案二:

结果是4321,为什么是这个结果,这是我的一个猜想,因为最外围的printf中的参数是printf中时,它会自身压入栈中,并且值为1,然后第二个printf开始运行,但是第二个printf中还存在printf,则第2个printf继续压栈,值为2,执行最后一个printf,最后一个printf的结果为43,首先弹出栈,然后是第二个printf弹出,值为2,结果就是432,最后就是最外围的printf出栈,值为1,结果就是4321了。

时间: 2024-10-31 10:14:28

c语言-解释下,谢谢,这个程序的运行结果的相关文章

new-Kmeans算法初学者,想请教大神,编程不怎么强麻烦解释下谢谢

问题描述 Kmeans算法初学者,想请教大神,编程不怎么强麻烦解释下谢谢 List<ArrayList<Double>> centers = new ArrayList<ArrayList<Double>>(); List<ArrayList<Double>> newCenters = new ArrayList<ArrayList<Double>>(); List<ArrayList<ArrayL

record-下方是我的c语言代码,为何下方程序的运行需要等好长时间才能打印出第一个字符。。。。何解?

问题描述 下方是我的c语言代码,为何下方程序的运行需要等好长时间才能打印出第一个字符....何解? #include<unistd.h> #include<stdio.h> #include<sys/mman.h> #include<fcntl.h> #include<stdlib.h> typedef struct{ int integer; char string[24]; } RECORD; #define NRECORDS (10) RE

linux 并行-Linux下MPI+OpenMP程序编译运行出错

问题描述 Linux下MPI+OpenMP程序编译运行出错 如题,错误提示如下: [node65:03787] *** Process received signal *** [node65:03787] Signal: Segmentation fault (11) [node65:03787] Signal code: Address not mapped (1) [node65:03787] Failing at address: 0x44000098 [node65:03787] [ 0

帮忙看下解释下这段程序(asp.net ajax)

问题描述 <asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager><scripttype="text/javascript">Type.registerNamespace("sample");sample.myclass=function(){sample.myclass.initializeBase(t

笔记本win7系统下为应用程序定制运行命令提高工作效率的技巧

  1.首先点击开始按钮,鼠标右击IE9的快捷方式,选择"打开文件位置"; 2.接着用鼠标右键单击IE9,选择"发送到-桌面快捷方式",在Win7桌面上生成一个IE9的快捷方式图标,然后将桌面上的IE9快捷方式重命名改为"1",也就是以后在运行中输入"1"来打开IE9; 3.打开Win7资源管理器并在地址栏中输入"%windir%",打开Windows文件夹,然后将刚才桌面上已改名的快捷方式剪切并粘贴到该文

帮忙解释下两个初学的小程序代码

问题描述 importjava.awt.*;classFirstWindowextendsFrame{MenuBarmenubar;Menumenu;MenuItemitem1,item2;FirstWindow(Strings){setTitle(s);Toolkittool=getToolkit();Dimensiondim=tool.getScreenSize();setBounds(0,0,dim.width,dim.height/2);menubar=newMenuBar();menu

实现程序互斥运行的几种方法

在WIN32下,实现程序互斥运行的方法有很多种,我简单分析以下几种不同的实现: 一.在VC下的实现 Visual C++ 是WIN32编程最主要也是最强大的编程工具这一,引用一名话来说VC就是"只有你想不到的,没有VC做不到的".废话少说,下面看看用VC是如何这个功能. A.使用编译器来实现(使用MFC框架): 在.cpp文件开头加上以下几行: #pragma data_seg("Shared") int volatile g_lAppInstance =0; #p

c语言-请求帮我详细解释下这个程序,谢谢了

问题描述 请求帮我详细解释下这个程序,谢谢了 #include #include #define uchar unsigned char #define uint unsigned int #define WCOMM XBYTE[0x0000] #define RCOMM XBYTE[0x0001] #define WDATA XBYTE[0x0002] #define RDATA XBYTE[0x0003] void BusyWait() { while((RCOMM & 0x80) != 0

java 此程序为啥有着这种结果呢?求大神们解释下。谢谢

问题描述 java 此程序为啥有着这种结果呢?求大神们解释下.谢谢 public class AccessProperty { static int i = 47; // 定义静态成员变量 public void call() { // 定义成员方法 System.out.println("调用call()方法"); for (i = 0; i < 3; i++) { System.out.print(i + " "); if (i == 2) { Syste