c++ 的 printf函数的输出问题

问题描述

c++ 的 printf函数的输出问题

假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?

int main(){
  long long a = 1, b = 2, c = 3
  printf("%d %d %d
", a, b, c);
 return 0;
}

A 1,2,3
B 1,0,2
C 1,3,2
D 3,2,1

解决方案

printf 函数问题
C语言中printf格式化输出函数
C语言中printf格式化输出函数

解决方案二:

应该也是123吧,感觉和little endian没关。

解决方案三:

这个还是1,2,3
跟大小端没多大关系

解决方案四:

低端 和 高端 字节序 是cup不同 处理数值的内存位置不一样 你在低端上运行程序 数值不会有什么改变的 除非你把低端的字节序 发送给 高字节序的机器去处理相同的内存时候 才会有不同的差别

解决方案五:

低端 和 高端 字节序 是cup不同 处理数值的内存位置不一样 你在低端上运行程序 数值不会有什么改变的 除非你把低端的字节序 发送给 高字节序的机器去处理相同的内存时候 才会有不同的差别

解决方案六:

B 1,0,2 B 1,0,2 B 1,0,2 B 1,0,2 B 1,0,2

解决方案七:

答案应该是B。
a, b, c各占8字节,因此调用printf()时的压栈顺序(按照32位来考虑):字符串,LOW(a), HI(a), LOW(b), HI(b), LOW(c), HI(c)。
LOW(a)为a的低4字节(=1),HI(a)为a的高4字节(=0)。其余同理。先压LOW(a)还是先压HI(a)由系统架构,即little endian决定。
先压a,还是先压c是由调用约定决定。这里可以暂不考虑调用约定,因为出栈和入栈是保持一致的。
printf的读取参数的时候,因为一个%d处理一个整型(4字节)参数,所以第一个%d对应LOW(a)=1, 第二个%d对应HI(a)=0,第三个%d对应LOW(b)=2。

时间: 2024-08-03 17:13:03

c++ 的 printf函数的输出问题的相关文章

php中sprintf与printf函数用法区别

 这篇文章主要介绍了php中sprintf与printf函数用法区别解析,需要的朋友可以参考下 下面是一个示例:四舍五入保留小数点后两位    代码如下: <?php $num1 = 21; echo sprintf("%0.2f",$num1)."<br />"; //输出 21.00 $num2 = 16.3287; echo sprintf("%0.2f",$num2)."<br />";

C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) .

我们在C语言编程中会遇到一些参数个数可变的函数,一般人对它的实现不理解.例如Printf():   Printf()函数是C语言中非常常用的一个典型的变参数函数,它 的原型为: int printf( const char* format, ...); 它除了一个参数format固定外,后面的参数的个数和类型是不确定的,如下列三种调用方法: 1.    printf("%d\n", i); 2.    printf("%s\n", "Hello World

表达式-c语言中的printf函数问题

问题描述 c语言中的printf函数问题 int main() { int arry[3][5]={ {1,2,4}, {4,5,6,7}, {6,5,3,8} }; int (*p)[5]; p=arry; printf("%xn",*(p+1)+3); printf("%xn",*(*(p+1)+3)); printf("%xn",*(p+1)+3); printf("%xn",*(p+1)+2); printf(&quo

深入浅析php中sprintf与printf函数的用法及区别_php实例

PHP sprintf() 函数 把百分号(%)符号替换成一个作为参数进行传递的变量: <?php $number = 2; $str = "Shanghai"; $txt = sprintf("There are %u million cars in %s.",$number,$str); echo $txt; ?> 定义和用法 sprintf() 函数把格式化的字符串写入变量中. arg1.arg2.++ 参数将被插入到主字符串中的百分号(%)符号处

c语言printf函数的使用详解_C 语言

printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左对齐输出,如省略表示右对齐输出.③0:有0表示指定空位填0,如省略表示指定空位不填.④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数.N指精度.用于说明输出的实型数的小数位数.为指定n时,隐含的精度为n=6位.⑤l或h:l对整型指long型,对实型指double型.h用于将整型的格式字符修正为short型. ----------

php print() 与printf()函数教程

php print() 与printf()函数教程 定义和用法 print( )函数输出一个或多个字符串. 语法 print(strings) Parameter Description strings Required. One or more strings to be sent to the output 提示和说明注:print( )函数没有实际的功能,所以你不需要使用括号的. 提示:print( )函数略低于回声( ) . -------------------------------

深入剖析PHP中printf()函数格式化使用

printf()函数优点在于可以格式化输出! printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说明: ①%:表示格式说明的起始符号,不可缺少. ②-:有-表示左对齐输出,如省略表示右对齐输出. ③0:有0表示指定空位填0,如省略表示指定空位不填. ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数.N指精度.用于说明输出的实型数的小数位数.为指定n时,隐含的精度为n=6位. ⑤l或h:l对整型指long型,对实型指double型.h用

PHP4 的新函数介绍 - 输出信息控制函数 ,以前别人转发的

函数|控制 PHP4 的新函数介绍 - 输出信息控制函数   魔族精灵 这些函数可以让你控制你的脚本输出的内容.可以用于许多不同的情况,特别是在你的脚本已经输出信息后需要发送文件头新的情况. 输出控制函数不对使用 header() 或 setcookie() 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用. 例 1. 控制输出 <?php ob_start(); echo "Hello\n"; setcookie ("cookie

OnItemSelectedListener 监听器下调用函数 怎么输出结果为空

问题描述 OnItemSelectedListener 监听器下调用函数 怎么输出结果为空 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.test_layout, container, false); spinner=(Spinner)view.fi