我看了看但找不到合适的答案。
我想知道printf是如何工作的,如下所示:
char arr[2] = {5,6};
printf ("%d%d",arr[0],arr[1]);
我认为printf只是遍历格式,当它包含%d时,例如它从它的当前位置读取4个字节...但是这是错误的,因为上面的效果非常好。
所以,我错在哪里?
答案 0 :(得分:9)
答案 1 :(得分:1)
当你说:
printf ("%d%d",arr[0],arr[1]);
字符串和评估两个数组表达式的结果放在堆栈上并调用printf
。 printf
从堆栈中获取字符串,并使用其中的%formatters按顺序访问其他堆栈参数。具体如何取决于实际的%值,例如,%d
读取4个字节,%f
读取8个(对于大多数32位体系结构)。